Orden ¿Descendiendo en la expresión Lambda?

250

Sé que en la gramática normal de Linq, orderby xxx descendinges muy fácil, pero ¿cómo hago esto en la expresión Lambda?

silencio
fuente

Respuestas:

428

Como dice Brannon, es OrderByDescendingy ThenByDescending:

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

es equivalente a:

var query = people.OrderByDescending(person => person.Name)
                  .ThenByDescending(person => person.Age)
                  .Select(person => person.Name);
Jon Skeet
fuente
77
"orden descendente por person.Name" debe ser " orderby person.Name descendente"
mxmissile
63

Uso System.Linq.Enumerable.OrderByDescending()?

Por ejemplo:

var items = someEnumerable.OrderByDescending();
Brannon
fuente
21

Prueba esto:

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);                
}
Paul Zahra
fuente
14

Prueba esto de otra manera:

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

Queryable.ThenBy

Sujit
fuente
3

Esto solo funciona en situaciones en las que tiene un campo numérico, pero puede poner un signo menos delante del nombre del campo de esta manera:

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

Sin embargo esto funciona un poco diferente de lo poco OrderByDescendingcuando haya está ejecutando en una int?o double?o decimal?campos.

Lo que sucederá es que OrderByDescendinglos nulos estarán al final, en comparación con este método, los nulos estarán al principio. Lo cual es útil si desea barajar nulos sin dividir los datos en partes y empalmarlos más tarde.

Alexander Ryan Baggett
fuente
1

LastOrDefault()por lo general no funciona pero con el Tolist()funcionará. No hay necesidad de usar un OrderByDescendinguso Tolist()como este.

GroupBy(p => p.Nws_ID).ToList().LastOrDefault();
Kawindu
fuente