2010-10-13 26 views
107

Me gustaría recibir una lista de ordenada por 'Product.Name' en orden descendente.C# list.Orderby descendente

Al igual que la función a continuación que ordena la lista en orden ascendente, al revés, ¿es posible?

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

¿Podría ser que haya escrito 'toList' en lugar de' ToList'? –

+1

Creo que quiso decir que no acepta la palabra clave 'descendente', porque no comenzó su expresión con' de x en la lista ... ' – StriplingWarrior

+1

Lo siento, no copié ese código exactamente, sino que lo escribí memoria. Mi código real funciona, pero solo devuelve una lista ordenada en orden ascendente. – PFranchise

Respuesta

194

Claro:

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

¿Su edición ordenará por nombre (de z-> a) luego precio (bajo -> alto)? – PFranchise

+10

Sí, eso es correcto. Las llamadas a OrderBy o ThenBy siempre están ascendiendo. Los métodos OrderByDescending y ThenByDescending son los que usarías para descender. – StriplingWarrior

8
list.OrderByDescending(); 

trabaja para mí.

+2

Esto no hizo nada sin hacer la lista = list.OrderByDescending(). ToList(); – Almo

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

Lo que funciona para mí para mostrar la hora ordenada en orden descendente.

+15

Esta respuesta ya se dio hace casi tres años – Dutts

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

Esto debería hacer el trabajo.

0

mirar esta pieza de código de mi proyecto

Estoy intentando volver a ordenar la lista basándose en una propiedad dentro de mi modelo,

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

pero enfrentado a un problema cuando un small and capital letters exist , para resolverlo, utilicé el comparador de cuerdas.

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