C # list.Orderby decrescente


150

Gostaria de receber uma lista classificada por 'Product.Name' em ordem decrescente .

Semelhante à função abaixo, que classifica a lista em ordem crescente, exatamente ao contrário, isso é possível?

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

O problema pode ser que você escreveu em toListvez de ToList?
Mark Byers

1
Eu acho que ele quis dizer que ele não aceita a descendingpalavra-chave, porque ele não começou sua expressão comfrom x in list...
StriplingWarrior

1
Desculpe, não copiei esse código exatamente, mas digitei de memória. Meu código real funciona, mas apenas retorna uma lista que é classificada em ordem crescente.
PFranchise

Respostas:


260

Certo:

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

Doc: OrderByDescending (IEnumerable, Func) .

Em resposta ao seu comentário:

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

2
Portanto, sua edição classificará por nome (de z-> a) e preço (baixo -> alto)?
PFranchise

11
Sim, está correto. As chamadas para OrderBy ou ThenBy estão sempre em ascensão. Os métodos OrderByDescending e ThenByDescending são os que você usaria para descer.
StriplingWarrior


11
list.OrderByDescending();

funciona para mim.


4
Isso não fez nada sem fazer list = list.OrderByDescending (). ToList ();
Almo

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

Isso deve fazer o trabalho.


1

olha este pedaço de código do meu projeto

Estou tentando reordenar a lista com base em uma propriedade dentro do meu modelo,

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

mas enfrentei um problema quando a small and capital letters exist, para resolvê-lo, usei o comparador de cadeias.

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

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

O que funciona para eu mostrar o tempo classificado em ordem decrescente.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.