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();
PFranchise
fonte
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();
StriplingWarrior
fonte
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
23

Sim. Use em OrderByDescendingvez de OrderBy.

Mark Byers
fonte
11
list.OrderByDescending();

funciona para mim.

Tábua
fonte
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.

Beedjees
fonte
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)
Basheer AL-MOMANI
fonte
-2
list = new List<ProcedureTime>(); sortedList = list.OrderByDescending(ProcedureTime=> ProcedureTime.EndTime).ToList();

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

Archana
fonte