Lista de C #. Orden por descendente

150

Me gustaría recibir una lista ordenada por 'Product.Name' en orden descendente .

Similar a la función a continuación que ordena la lista en orden ascendente, solo a la inversa, ¿es esto posible?

var newList = list.OrderBy(x => x.Product.Name).ToList();
Franquicia
fuente
¿Podría ser el problema que hayas escrito en toListlugar de ToList?
Mark Byers
1
Creo que quiso decir que no acepta la descendingpalabra clave, porque no comenzó su expresión confrom x in list...
StriplingWarrior
1
Lo siento, no copié ese código exactamente, pero lo escribí de memoria. Mi código real funciona, pero solo devuelve una lista que está ordenada en orden ascendente.
PFranchise

Respuestas:

260

Por supuesto:

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

Doc: OrderByDescending (IEnumerable, Func) .

En respuesta a tu comentario:

var newList = list.OrderByDescending(x => x.Product.Name)
                  .ThenBy(x => x.Product.Price)
                  .ToList();
StriplingWarrior
fuente
2
Entonces, ¿su edición se ordenará por nombre (de z-> a) luego precio (bajo -> alto)?
PFranchise
11
Si, eso es correcto. Las llamadas a OrderBy o ThenBy siempre son ascendentes. Los métodos OrderByDescending y ThenByDescending son los que usaría para descender.
StriplingWarrior
11
list.OrderByDescending();

funciona para mi.

Tableta
fuente
44
Esto no hizo nada sin hacer list = list.OrderByDescending (). ToList ();
Almo
8
var newList = list.OrderBy(x => x.Product.Name).Reverse()

Esto debería hacer el trabajo.

Beedjees
fuente
1

mira este fragmento de código de mi proyecto

Estoy tratando de reordenar la lista en función de una propiedad dentro de mi modelo,

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

pero enfrenté un problema cuando a small and capital letters exist, así que para resolverlo, utilicé el comparador de cadenas.

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

Lo que me funciona para mostrar el tiempo ordenado en orden descendente.

Archana
fuente