Por decrescente na expressão Lambda?

250

Eu sei que na gramática normal do Linq, orderby xxx descendingé muito fácil, mas como faço isso na expressão Lambda?

silencioso
fonte

Respostas:

428

Como Brannon diz, é OrderByDescendinge ThenByDescending:

var query = from person in people
            orderby person.Name descending, person.Age descending
            select person.Name;

é equivalente a:

var query = people.OrderByDescending(person => person.Name)
                  .ThenByDescending(person => person.Age)
                  .Select(person => person.Name);
Jon Skeet
fonte
7
"order by person.Name descendente" deve ser " orderby person.Name descendente"
mxmissile
63

Usar System.Linq.Enumerable.OrderByDescending()?

Por exemplo:

var items = someEnumerable.OrderByDescending();
Brannon
fonte
21

Tente o seguinte:

List<int> list = new List<int>();
list.Add(1);
list.Add(5);
list.Add(4);
list.Add(3);
list.Add(2);

foreach (var item in list.OrderByDescending(x => x))
{
    Console.WriteLine(item);                
}
Paul Zahra
fonte
14

Tente isso de outra maneira:

var qry = Employees
          .OrderByDescending (s => s.EmpFName)
          .ThenBy (s => s.Address)
          .Select (s => s.EmpCode);

Queryable.ThenBy

Sujit
fonte
3

Isso funciona apenas em situações em que você possui um campo numérico, mas pode colocar um sinal de menos na frente do nome do campo, da seguinte maneira:

reportingNameGroups = reportingNameGroups.OrderBy(x=> - x.GroupNodeId);

No entanto, isso funciona um pouco diferente do que OrderByDescendingquando você o está executando em um int?ou double?ou decimal?campos.

O que acontecerá é que OrderByDescendingos nulos estarão no final, contra esse método, os nulos estarão no início. O que é útil se você deseja embaralhar nulos sem dividir os dados em partes e emendá-los posteriormente.

Alexander Ryan Baggett
fonte
1

LastOrDefault()geralmente não está funcionando, mas com o Tolist()que irá funcionar. Não há necessidade de usar o OrderByDescendinguso Tolist()como este.

GroupBy(p => p.Nws_ID).ToList().LastOrDefault();
Kawindu
fonte