Порядок по убыванию в лямбда-выражении? - PullRequest
244 голосов
/ 28 октября 2009

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

Ответы [ 6 ]

418 голосов
/ 28 октября 2009

Как говорит Браннон, это 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);
63 голосов
/ 28 октября 2009

Используйте System.Linq.Enumerable.OrderByDescending()?

Например:

var items = someEnumerable.OrderByDescending();
21 голосов
/ 28 октября 2009

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

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 голосов
/ 12 сентября 2012

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

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

Queryable.ThenBy

3 голосов
/ 21 февраля 2018

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

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

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

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

1 голос
/ 15 октября 2017

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

GroupBy(p => p.Nws_ID).ToList().LastOrDefault();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...