2011-02-09 15 views
5

Prawdopodobnie to, o co pytam, jest dość proste, ale wydaje mi się, że nie dostaję tego. Mam listę elementów zawierających pole Data i pole Czas. Pole Data jest zwykłą datą czasu, a pole Czas jest ciągiem. Czas jest sformatowany jak HH: mm i zakresy w ciągu 24h.Lista zamówień według daty i czasu (w formacie smyczkowym)

Zamawianie mojej listy według daty jest proste, wykonując List.OrderBy (e => e.Date), ale wydaje mi się, że nie mogę później zamówić według czasu, więc kolejność rekordów jest zgodna z data i czas.

Próbowałem tego, ale to prawdopodobnie duży błąd!

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

Mam nadzieję, że ktoś może mi pomóc z tym.

Odpowiedz

10

Chcesz OrderBy(...).ThenBy(...); a także - nie, że jeśli czas jest w HH:mmnie trzeba analizować to - można po prostu rodzaj to alfabetycznie, tzn

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

lub poprzez LINQ:

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

Wiedziałem, że to musi być dość proste, jestem po prostu naprawdę śpiący dzisiaj. Jako pierwszy odpowiedziałeś i uważam, że twoja odpowiedź jest całkiem dobra, więc dostajesz punkty. Dziękuję wszystkim, którzy pomogli. – Hallaghan

4

dlaczego nie spróbować czegoś jak następuje:

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

Znasz ThenBy()?

List = List.OrderBy(DATE).ThenBy(Time) 
Powiązane problemy