2010-10-13 9 views
107

Je voudrais recevoir une liste triée par 'Product.Name' dans ordre décroissant.C# liste.Orderby descendant

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

var newList = list.OrderBy(x => x.Product.Name).ToList(); 
+0

Le problème pourrait-il être que vous avez écrit 'toList' au lieu de' ToList'? –

+1

Je pense qu'il voulait dire qu'il n'accepte pas le mot-clé 'descending', parce qu'il n'a pas commencé son expression avec' de x dans la liste ... ' – StriplingWarrior

+1

Désolé, je n'ai pas copié ce code exactement, mais je l'ai tapé Mémoire. Mon code fonctionne, mais renvoie simplement une liste triée par ordre croissant. – PFranchise

Répondre

194

Bien 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 édition va trier par nom (de z-> a) puis prix (bas -> haut)? – PFranchise

+10

Oui, c'est correct. Les appels à OrderBy ou ThenBy sont toujours ascendants. Les méthodes OrderByDescending et ThenByDescending sont ce que vous utiliseriez pour descendre. – StriplingWarrior

8
list.OrderByDescending(); 

fonctionne pour moi.

+2

Cela n'a rien fait sans faire list = list.OrderByDescending(). ToList(); – Almo

-2
list = new List<ProcedureTime>(); sortedList = list.OrderByDescending(ProcedureTime=> ProcedureTime.EndTime).ToList(); 

Ce qui fonctionne pour moi de montrer l'heure triée dans l'ordre décroissant.

+15

Cette réponse a déjà été donnée il y a presque trois ans – Dutts

4
var newList = list.OrderBy(x => x.Product.Name).Reverse() 

Cela devrait faire l'affaire.

0

le regarder ce morceau de code de mon projet

Je suis en train de réorganiser la liste en fonction d'une propriété à l'intérieur de mon modèle,

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

mais je fait face à un problème quand un small and capital letters exist Pour le résoudre, j'ai utilisé le comparateur de chaînes.

allEmployees.OrderBy(employee => employee.Name,StringComparer.CurrentCultureIgnoreCase)