OrderBy absteigend im Lambda-Ausdruck?


250

Ich weiß, dass es in der normalen Linq-Grammatik orderby xxx descendingsehr einfach ist, aber wie mache ich das im Lambda-Ausdruck?

Antworten:


428

Wie Brannon sagt, ist es OrderByDescendingund ThenByDescending:

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

ist äquivalent zu:

var query = people.OrderByDescending(person => person.Name)
                  .ThenByDescending(person => person.Age)
                  .Select(person => person.Name);

7
"order by person.Name descending" sollte " orderby person.Name descending" sein
mxmissile

63

Verwenden System.Linq.Enumerable.OrderByDescending()?

Beispielsweise:

var items = someEnumerable.OrderByDescending();

21

Versuche dies:

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);                
}

14

Versuchen Sie es anders:

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

Queryable.ThenBy


3

Dies funktioniert nur in Situationen, in denen Sie ein numerisches Feld haben. Sie können jedoch wie folgt ein Minuszeichen vor den Feldnamen setzen:

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

Dies funktioniert jedoch etwas anders als OrderByDescendingwenn Sie es auf einem int?oder double?oder decimal?Feldern ausführen.

Was passieren wird, ist, dass OrderByDescendingdie Nullen am Ende stehen, während bei dieser Methode die Nullen am Anfang stehen. Dies ist nützlich, wenn Sie Nullen mischen möchten, ohne Daten in Teile aufzuteilen und später zu spleißen.


1

LastOrDefault()funktioniert normalerweise nicht, aber mit dem wird Tolist()es funktionieren. Es besteht keine Notwendigkeit zu verwenden OrderByDescendingVerwendung Tolist()wie diese.

GroupBy(p => p.Nws_ID).ToList().LastOrDefault();
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.