Je sais que dans la grammaire Linq normale, orderby xxx descendingc'est très facile, mais comment faire cela dans l'expression Lambda?
Je sais que dans la grammaire Linq normale, orderby xxx descendingc'est très facile, mais comment faire cela dans l'expression Lambda?
Réponses:
Comme le dit Brannon, c'est OrderByDescendinget ThenByDescending:
var query = from person in people
orderby person.Name descending, person.Age descending
select person.Name;
est équivalent à:
var query = people.OrderByDescending(person => person.Name)
.ThenByDescending(person => person.Age)
.Select(person => person.Name);
Essaye ça:
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);
}
Essayez ceci d'une autre manière:
var qry = Employees
.OrderByDescending (s => s.EmpFName)
.ThenBy (s => s.Address)
.Select (s => s.EmpCode);
Cela ne fonctionne que dans les situations où vous avez un champ numérique, mais vous pouvez mettre un signe moins devant le nom du champ comme suit:
reportingNameGroups = reportingNameGroups.OrderBy(x=> - x.GroupNodeId);
Cependant , cela fonctionne un autre petit peu que OrderByDescendinglorsque vous avez exécutez sur un int?ou double?ou les decimal?champs.
Ce qui se passera est sur OrderByDescendingles nulls sera à la fin, vs avec cette méthode, les nulls seront au début. Ce qui est utile si vous souhaitez mélanger les valeurs nulles sans diviser les données en morceaux et les épisser plus tard.