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();

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();

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


11
list.OrderByDescending();

travaille pour moi.


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.


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)

-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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.