【发布时间】:2010-12-10 18:24:03
【问题描述】:
我知道在正常的 Linq 语法中,orderby xxx descending 很简单,但是在 Lambda 表达式中我该怎么做呢?
【问题讨论】:
我知道在正常的 Linq 语法中,orderby xxx descending 很简单,但是在 Lambda 表达式中我该怎么做呢?
【问题讨论】:
正如布兰农所说,是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);
【讨论】:
使用System.Linq.Enumerable.OrderByDescending()?
例如:
var items = someEnumerable.OrderByDescending();
【讨论】:
试试这个:
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);
}
【讨论】:
换一种方式试试:
var qry = Employees
.OrderByDescending (s => s.EmpFName)
.ThenBy (s => s.Address)
.Select (s => s.EmpCode);
【讨论】:
这仅适用于您有一个数字字段的情况,但您可以在字段名称前放置一个减号,如下所示:
reportingNameGroups = reportingNameGroups.OrderBy(x=> - x.GroupNodeId);
但是,当您在 int? 或 double? 或 decimal? 字段上运行它时,它的工作方式与 OrderByDescending 略有不同。
在OrderByDescending 上会发生什么,空值将位于末尾,而使用此方法时,空值将位于开头。如果您想在不将数据拆分成片段并稍后拼接的情况下将空值随机排列,这很有用。
【讨论】:
LastOrDefault() 通常不工作,但使用Tolist() 它会工作。没必要用OrderByDescending这样用Tolist()。
GroupBy(p => p.Nws_ID).ToList().LastOrDefault();
【讨论】: