2011-02-09 4 views
5

Probablemente lo que estoy preguntando es bastante simple, pero parece que no saco esta. Tengo una lista de elementos que contienen un campo de fecha y un campo de hora. El campo de fecha es un horario regular y el campo de tiempo es una cadena. El tiempo se formatea como HH: mm y se extiende en 24 h.Lista de pedidos por fecha y hora (en formato de cadena)

Ordenar mi lista por fecha es simple haciendo List.OrderBy (e => e.Date), pero parece que no puedo ordenar más tarde por Time para que el orden de los registros coincida con fecha y hora

¡Probé esto pero es probable que sea un gran error!

List = List.OrderBy(e => e.EstimatedDate).OrderBy(e => new TimeSpan(int.Parse(e.EstimatedTime.Substring(0,e.EstimatedTime.LastIndexOf(":"))),int.Parse(e.EstimatedTime.Substring(e.EstimatedTime.LastIndexOf(":")+1)),0).TotalMinutes); 

Espero que alguien pueda ayudarme con esta.

Respuesta

10

¿Quieres OrderBy(...).ThenBy(...); y también - no es que si el tiempo está en HH:mmque no tiene que analizarlo - puede simplemente ordenar por orden alfabético, es decir

List = List.OrderBy(e => e.EstimatedDate).ThenBy(e => e.EstimatedTime).ToList(); 

oa través de LINQ:

List = (from e in List 
     orderby e.EstimatedDate, e.EstimatedTime 
     select e).ToList(); 
+1

Sabía que esto tendría que ser bastante simple, hoy tengo mucho sueño. Fuiste el primero en responder y creo que tu respuesta es bastante buena para que obtengas los puntos. Gracias a todos los que ayudaron sin embargo. – Hallaghan

4

por qué no intentar algo así como lo siguiente:

List.OrderBy(e => e.Date).ThenBy(e => DateTime.Parse(e.Time)); 
// May need to change DateTime.Parse(e.Time) with appropriate conversion code 
2

¿Conoces ThenBy()?

List = List.OrderBy(DATE).ThenBy(Time) 
Cuestiones relacionadas