44 votes

Trier une liste<DateTime> de manière descendante

En c# (3.0 ou 3.5, pour pouvoir utiliser les lambdas), existe-t-il un moyen élégant de trier une liste de dates par ordre décroissant ? Je sais que je peux faire un tri direct, puis inverser le tout,

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

mais existe-t-il une expression lambda pour le faire en une seule étape ?

Dans l'exemple ci-dessus, StoredDate est une propriété typée DateTime.

77voto

Austin Salonen Points 28057

Bien que ce ne soit pas testé...

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

devrait être l'opposé de ce que vous aviez à l'origine.

61voto

ScottSEA Points 2978

Quel est le problème avec

docs.OrderByDescending(d => d.StoredDate)?

20voto

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

Ça devrait faire ce que vous cherchez.

6voto

Tamas Czinege Points 49277
docs.Sort((x, y) => -x.StoredDate.CompareTo(y.StoredDate));

Notez le signe moins.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X