OrderBy在Lambda表达式中降序?

时间:2009-10-28 06:29:45

标签: linq lambda

我知道在正常的Linq语法中,orderby xxx descending非常简单,但我如何在Lambda表达式中执行此操作?

6 个答案:

答案 0 :(得分:418)

正如Brannon所说,它是OrderByDescendingThenByDescending

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

答案 1 :(得分:63)

使用System.Linq.Enumerable.OrderByDescending()

例如:

var items = someEnumerable.OrderByDescending();

答案 2 :(得分: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);                
}

答案 3 :(得分:14)

尝试另一种方式:

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

Queryable.ThenBy

答案 4 :(得分:3)

这仅适用于您有数字字段的情况,但您可以在字段名称前添加减号,如下所示:

app_offline.htm

但是,当您在reportingNameGroups = reportingNameGroups.OrderBy(x=> - x.GroupNodeId); OrderByDescendingint?字段上运行时,这与double?略有不同。

decimal?上会发生什么,空值将在最后,与此方法相比,空值将在开头。如果您希望在不将数据拆分成片段并稍后拼接它的情况下随机播放空值,这将非常有用。

答案 5 :(得分:1)

LastOrDefault()通常不起作用,但使用Tolist()它会起作用。没有必要像这样OrderByDescending使用Tolist()

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