OrderBy спускается в выражении Lambda?

Я знаю в обычной грамматике Linq, orderby xxx descending очень просто, но как это сделать в выражении Lambda?

Ответ 1

Как говорит Браннон, OrderByDescending и ThenByDescending:

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

эквивалентно:

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

Ответ 2

Использовать System.Linq.Enumerable.OrderByDescending()?

Например:

var items = someEnumerable.OrderByDescending();

Ответ 3

Попробуй это:

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

Ответ 4

Попробуйте это по-другому:

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

Queryable.ThenBy

Ответ 5

Это работает только в тех случаях, когда у вас есть числовое поле, но вы можете поставить знак минус перед именем поля, например, так:

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

Однако это работает немного по-другому, чем OrderByDescending когда вы запускаете его на int? или double? или decimal? поля.

Что произойдет, в OrderByDescending нули будут в конце, а с этим методом нули будут в начале. Что полезно, если вы хотите перемешать пустые значения, не разбивая данные на части и не разбивая их позже.

Ответ 6

LastOrDefault() обычно не работает, но с Tolist() он будет работать. Нет необходимости использовать OrderByDescending использовать Tolist() как это.

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

Ответ 7

Пожалуйста, проверьте этот пример. Я перечисляю имена собак по возрасту в порядке убывания.

List<Dog> dogs = new List<Dog>() 
{   
    new Dog { Name = "Adog", Age = 10 },  
    new Dog { Name = "Bdog", Age = 11 },  
    new Dog { Name = "CDog", Age = 9 }  
}; 

var sortedDogs = dogs.OrderByDescending(x => x.Age);  

foreach (var dog in sortedDogs)   
{  
    Console.WriteLine(string.Format("Dog {0} is {1} years old.", dog.Name, dog.Age));  
}