Conosco la normale grammatica di Linq, orderby xxx descending
è molto semplice, ma come posso farlo nell'espressione Lambda?
Conosco la normale grammatica di Linq, orderby xxx descending
è molto semplice, ma come posso farlo nell'espressione Lambda?
Risposte:
Come dice Brannon, è 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);
Prova questo:
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);
}
Prova in un altro modo:
var qry = Employees
.OrderByDescending (s => s.EmpFName)
.ThenBy (s => s.Address)
.Select (s => s.EmpCode);
Funziona solo in situazioni in cui hai un campo numerico, ma puoi mettere un segno meno davanti al nome del campo in questo modo:
reportingNameGroups = reportingNameGroups.OrderBy(x=> - x.GroupNodeId);
Tuttavia, questo funziona in modo leggermente diverso rispetto a OrderByDescending
quando lo stai eseguendo su un int?
o double?
o decimal?
campi.
Quello che accadrà è sui OrderByDescending
null sarà alla fine, rispetto a questo metodo i null saranno all'inizio. Ciò è utile se si desidera mescolare i null senza dividere i dati in pezzi e ricucirli successivamente.