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