Порядок по убыванию в лямбда-выражении?


250

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

Ответы:


428

Как говорит Брэннон, это 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);

7
«упорядочить по person.Name убыванию» должно быть « OrderBy person.Name по убыванию»
mxmissile

63

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

Например:

var items = someEnumerable.OrderByDescending();

21

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

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

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

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

Queryable.ThenBy


3

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

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

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

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


1

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

GroupBy(p => p.Nws_ID).ToList().LastOrDefault();
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.