2008-10-28 4 views
38

En C# (3.0 ou 3.5, donc nous pouvons utiliser lambdas), existe-t-il un moyen élégant de trier une liste de dates dans l'ordre décroissant? Je sais que je peux faire une sorte droite puis inverser la chose,Trier la liste <DateTime> décroissant

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

mais est-il une expression lambda pour faire un pas?

Dans l'exemple ci-dessus, StoredDate est une propriété tapée en tant que DateTime.

Répondre

69

Bien qu'il soit non testé ...

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

devrait être le contraire de ce que vous aviez à l'origine.

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

Doit faire ce que vous cherchez.

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

Notez le signe moins.

+0

ma vie Saved: D –

56

Quel est le problème avec:

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

travaille avec moi :) – AshOoO

+3

+1 par souci de concision. –

+4

Notez que cela crée une nouvelle liste ordonnée plutôt que de modifier la liste en place. Certes, la perte de performance est négligeable. –