Porządek malejący w wyrażeniu Lambda?


250

Wiem, że w normalnej gramatyce Linq orderby xxx descendingjest to bardzo łatwe, ale jak mam to zrobić w wyrażeniu Lambda?

Odpowiedzi:


428

Jak mówi Brannon, jest OrderByDescendingi ThenByDescending:

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

jest równa:

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

7
„sortuj według osoby. Nazwa malejąca” powinno być „ zamówić według osoby. Nazwa malejąca”
mxmissile,

63

Użyć System.Linq.Enumerable.OrderByDescending()?

Na przykład:

var items = someEnumerable.OrderByDescending();

21

Spróbuj tego:

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

Spróbuj tego w inny sposób:

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

Queryable.ThenBy


3

Działa to tylko w sytuacjach, w których masz pole numeryczne, ale możesz umieścić znak minus przed nazwą pola w następujący sposób:

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

Jednak działa to trochę inaczej, niż OrderByDescendingkiedy nie używasz go na int?lub double?lub decimal?pól.

To, co się stanie, będzie miało OrderByDescendingwartość zerową na końcu, a przy tej metodzie wartości zerowe będą na początku. Jest to przydatne, jeśli chcesz przetasować wartości null bez dzielenia danych na części i łączenia ich później.


1

LastOrDefault()zwykle nie działa, ale z Tolist()tym będzie działać. Nie ma potrzeby OrderByDescendingkorzystania z Tolist()takiego użycia .

GroupBy(p => p.Nws_ID).ToList().LastOrDefault();
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.