2009-10-28 13 views

risposta

390

come dice Brannon, è OrderByDescending e 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); 
+6

"order by person.Name discendente" deve essere "* orderby * person.Name discendente" – mxmissile

+0

@mxmissile: Grazie, corretto. –

59

Utilizzare System.Linq.Enumerable.OrderByDescending()?

Ad esempio:

var items = someEnumerable.OrderByDescending(); 
18

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

Prova questa in un altro modo:

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

Queryable.ThenBy

-1

LastOrDefault() non è di solito funziona, ma con la Tolist() che funzionerà. Non è necessario utilizzare OrderByDescending utilizzare Tolis() come questo.

GroupBy(p => p.Nws_ID).ToList().LastOrDefault(); 
+0

questo non risponde correttamente alla domanda ... – Gaspa79

0

Questo funziona solo in situazioni in cui si ha un campo numerico, ma si può mettere un segno meno davanti al nome di campo in questo modo:

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

Tuttavia questo funziona un po 'diverso rispetto OrderByDescending quando lo si sta eseguendo su un campo int? o double? o decimal?.

Che cosa succederà è su OrderByDescending i valori nulli saranno alla fine, con questo metodo i valori nulli saranno all'inizio. Che è utile se vuoi mescolare null in giro senza dividere i dati in pezzi e giuntarli successivamente.