Liste C # Ordre décroissant

150

Je souhaite recevoir une liste triée par "Product.Name" par ordre décroissant .

Similaire à la fonction ci-dessous qui trie la liste par ordre croissant, juste à l'envers, est-ce possible?

var newList = list.OrderBy(x => x.Product.Name).ToList();
PFranchise
la source
Le problème pourrait-il être que vous avez écrit toListau lieu de ToList?
Mark Byers
1
Je pense qu'il voulait dire qu'il n'accepte pas le descendingmot - clé, car il n'a pas commencé son expression parfrom x in list...
StriplingWarrior
1
Désolé, je n'ai pas copié exactement ce code, mais je l'ai tapé de mémoire. Mon code réel fonctionne, mais renvoie simplement une liste triée par ordre croissant.
PFranchise

Réponses:

260

Sûr:

var newList = list.OrderByDescending(x => x.Product.Name).ToList();

Doc: OrderByDescending (IEnumerable, Func) .

En réponse à votre commentaire:

var newList = list.OrderByDescending(x => x.Product.Name)
                  .ThenBy(x => x.Product.Price)
                  .ToList();
StriplingGuerrier
la source
2
Donc, votre modification sera triée par nom (de z-> a) puis par prix (bas -> haut)?
PFranchise
11
Oui c'est correct. Les appels à OrderBy ou ThenBy sont toujours ascendants. Les méthodes OrderByDescending et ThenByDescending sont celles que vous utiliseriez pour la descente.
StriplingWarrior
23

Oui. Utilisez à la OrderByDescendingplace de OrderBy.

Mark Byers
la source
11
list.OrderByDescending();

travaille pour moi.

Tablette
la source
4
Cela n'a rien fait sans faire list = list.OrderByDescending (). ToList ();
Almo
8
var newList = list.OrderBy(x => x.Product.Name).Reverse()

Cela devrait faire le travail.

Beedjees
la source
1

regarde ce morceau de code de mon projet

J'essaye de réorganiser la liste en fonction d'une propriété dans mon modèle,

 allEmployees = new List<Employee>(allEmployees.OrderByDescending(employee => employee.Name));

mais j'ai rencontré un problème quand a small and capital letters exist, donc pour le résoudre, j'ai utilisé le comparateur de chaîne.

allEmployees.OrderBy(employee => employee.Name,StringComparer.CurrentCultureIgnoreCase)
Basheer AL-MOMANI
la source
-2
list = new List<ProcedureTime>(); sortedList = list.OrderByDescending(ProcedureTime=> ProcedureTime.EndTime).ToList();

Ce qui fonctionne pour moi pour afficher l'heure triée par ordre décroissant.

Archana
la source