Ordine In ordine decrescente in Lambda?


250

Conosco la normale grammatica di Linq, orderby xxx descendingè molto semplice, ma come posso farlo nell'espressione Lambda?

Risposte:


428

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

7
"ordine da person.Name discendente" dovrebbe essere " orderby person.Name discendente"
mxmissile

63

Usare System.Linq.Enumerable.OrderByDescending()?

Per esempio:

var items = someEnumerable.OrderByDescending();

21

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

14

Prova in un altro modo:

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

Queryable.ThenBy


3

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.


1

LastOrDefault()di solito non funziona ma con Tolist()esso funzionerà. Non è necessario utilizzare l' OrderByDescendinguso in Tolist()questo modo.

GroupBy(p => p.Nws_ID).ToList().LastOrDefault();
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.