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, è 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);
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 OrderByDescendingquando lo stai eseguendo su un int?o double?o decimal?campi.
Quello che accadrà è sui OrderByDescendingnull 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.