Elenco C #. Ordine decrescente


150

Vorrei ricevere un elenco ordinato per "Product.Name" in ordine decrescente .

Simile alla funzione di seguito che ordina l'elenco in ordine crescente, proprio al contrario, è possibile?

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

Il problema potrebbe essere che hai scritto toListinvece di ToList?
Mark Byers,

1
Penso che intendesse dire che non accetta la descendingparola chiave, perché non ha iniziato la sua espressione confrom x in list...
StriplingWarrior

1
Spiacenti, non ho copiato esattamente quel codice, ma l'ho digitato dalla memoria. Il mio codice effettivo funziona, ma restituisce solo un elenco ordinato in ordine crescente.
PFranchise,

Risposte:


260

Sicuro:

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

Doc: OrderByDescending (IEnumerable, Func) .

In risposta al tuo commento:

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

2
Quindi la tua modifica ordinerà per nome (da z-> a) quindi prezzo (basso -> alto)?
PFranchise,

11
Si, è corretto. Le chiamate a OrderBy o ThenBy sono sempre in aumento. I metodi OrderByDescending e ThenByDescending sono quelli che useresti per la discesa.
StriplingWarrior,


11
list.OrderByDescending();

per me va bene.


4
Questo non ha fatto nulla senza fare list = list.OrderByDescending (). ToList ();
Almo,

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

Questo dovrebbe fare il lavoro.


1

guarda questo pezzo di codice dal mio progetto

Sto cercando di riordinare l'elenco in base a una proprietà all'interno del mio modello,

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

ma ho riscontrato un problema quando a small and capital letters exist, quindi per risolverlo, ho usato il comparatore di stringhe.

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

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

Che funziona per me per mostrare il tempo ordinato in ordine decrescente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.