Eu sei que na gramática normal do Linq, orderby xxx descending
é muito fácil, mas como faço isso na expressão Lambda?
Eu sei que na gramática normal do Linq, orderby xxx descending
é muito fácil, mas como faço isso na expressão Lambda?
Respostas:
Como Brannon diz, é OrderByDescending
e 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);
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);
}
Tente isso de outra maneira:
var qry = Employees
.OrderByDescending (s => s.EmpFName)
.ThenBy (s => s.Address)
.Select (s => s.EmpCode);
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 OrderByDescending
quando você o está executando em um int?
ou double?
ou decimal?
campos.
O que acontecerá é que OrderByDescending
os 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.