2008-10-28 9 views
38

W języku C# (3.0 lub 3.5, dzięki czemu możemy używać lambdas), czy istnieje elegancki sposób sortowania listy dat w porządku malejącym? Wiem, że mogę zrobić proste sortowanie, a następnie odwrócić całość, ale czy istnieje wyrażenie lambda, aby zrobić to w jednym kroku?Lista sortowania <DateTime> Malejąco

W powyższym przykładzie StoredDate jest właściwością wpisaną jako DateTime.

Odpowiedz

69

Choć to niesprawdzone ...

docs.Sort((x, y) => y.StoredDate.CompareTo(x.StoredDate)); 

powinien być przeciwieństwem tego, co pierwotnie miał.

20
docs.Sort((x, y) => y.StoredDate.CompareTo(x.StoredDate)); 

Należy zrobić to, czego szukasz.

6
docs.Sort((x, y) => -x.StoredDate.CompareTo(y.StoredDate)); 

Uwaga znak minus.

+0

uratował mi życie: D –

56

Co w tym złego:

docs.OrderByDescending(d => d.StoredDate); 
+0

Pracuje ze mną :) – AshOoO

+3

+1 dla zwięzłości. –

+4

Należy zauważyć, że powoduje to utworzenie nowej uporządkowanej listy zamiast modyfikowania listy w miejscu. Oczywiście utrata wydajności jest znikoma. –