2008-10-28 15 views
38

En C# (3.0 o 3.5, entonces podemos usar lambdas), ¿hay una forma elegante de ordenar una lista de fechas en orden descendente? Sé que puedo hacer una especie recta y luego revertir todo el asunto,Sort List <DateTime> Descending

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

pero ¿hay una expresión lambda para hacerlo un paso?

En el ejemplo anterior, StoredDate es una propiedad escrita como DateTime.

Respuesta

69

Aunque es no probado ...

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

debería ser lo contrario de lo que tenía originalmente.

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

Debería hacer lo que usted está buscando.

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

Tenga en cuenta el signo menos.

+0

me salvó la vida: D –

56

¿Qué hay de malo en:

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

trabaja conmigo :) – AshOoO

+3

1 por razones de brevedad. –

+4

Tenga en cuenta que esto crea una nueva lista ordenada en lugar de modificar la lista en su lugar. De acuerdo, la pérdida de rendimiento es insignificante. –