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

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

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.


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.


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)

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

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.