2011-03-28 17 views
16

Esta es una rápida.
En Linq a sql, tengo que ordenar por un campo de fecha y hora que desciende entonces el orden en el momento en que la parte de la misma fecha y hora se presenta en orden ascendente, ¿tiene sentido? Este es un ejemplo del resultado necesario:

[Serial] [Fecha (mm-dd-aaaa: hh-MM-ss)]
1 03/13/2008: 10-10-02
2 3-13 -2008: 10-12-60
3 3-12-2008: 12-05-55


Linq a sql: Ordene por datetime desc, luego ordene por el tiempo parte de los datos asc?

traté:

return query.OrderByDescending(c=> c.Time).ThenBy(c=> c.Time.TimeOfDay); 


y ALS o intentado:

query.OrderByDescending(c => c.Time).ThenBy(c => c.Time.Hour).ThenBy(c=> c.Time.Minute).ThenBy(c=> c.Time.Second); 


pero nunca parecía funcionar. ¿Alguna sugerencia?

Respuesta

48

Utilice las propiedades Date y TimeOfDay para el género.

return query 
    .OrderByDescending(c=> c.Time.Date) 
    .ThenBy(c=> c.Time.TimeOfDay); 
+1

Ahh respuesta sí respuesta simultánea de nuevo – thmshd

+0

primer trabajo! ¡Ganador! Gracias hombre. – Galilyou

14

El problema es que "Tiempo" contiene información de fecha y hora, por lo tanto, ya está ordenando por completo. Tendría que tomar la parte de fecha para ordenar primero.

return query.OrderByDescending(c=> c.Time.Date).ThenBy(c=> c.Time.TimeOfDay); 

No se ha probado :)

2

creo primera orderByDescending ordena todo por fecha y hora (fecha + hora), por lo que los siguientes orderbys entrarán en vigor únicamente si tiene alguna registros con la misma marca de tiempo.

probar este

query.OrderByDescending(c=> c.Time.Date).ThenBy(c=> c.Time.TimeOfDay) 
0

Ponla a las garrapatas funcionará así:

return query.OrderByDescending(c=> c.Time.Ticks) 
Cuestiones relacionadas