Elenco ordini per data e ora (in formato stringa)

Probabilmente quello che sto chiedendo è piuttosto semplice, ma non sembra che lo stia facendo. Ho una lista di elementi contenenti un campo Data e un campo Ora. Il campo Data è un normale DateTime e il campo Ora è una stringa. Il tempo è formattato come HH: mm e varia in 24 ore.

Ordinare il mio elenco per Data è semplice eseguendo List.OrderBy (e => e.Date), ma non sembro essere in grado di ordinarlo successivamente per Ora in modo che l’ordine dei record sia secondo la data e l’ora .

Ho provato questo, ma probabilmente è un grosso errore!

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); 

Spero che qualcuno possa darmi una mano con questo.

Vuoi OrderBy(...).ThenBy(...); e anche – non che se il tempo è in HH:mm non devi analizzarlo – puoi semplicemente ordinarlo alfabeticamente, cioè

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

o tramite LINQ:

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

perché non provare qualcosa come il seguente:

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

Conosci ThenBy ()?

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