如何管理多个OrderByDescending标准?

时间:2011-01-11 13:36:54

标签: c# linq

我想获得一个按三个属性排序的列表,优先级为

  1. ToDate
  2. 数字
  3. RunDate
  4. 我的代码在这里

    MyList
        .OrderByDescending(p => p.ToDate)
        .OrderByDescending(p => p.Number)
        .OrderByDescending(p => p.RunDate)
        .FirstOrDefault();
    

    但结果不正确。

    例如,当MyList包含两个元素时:e1,e2和e1.ToDate> e2.ToDate,结果是e2。

    哪个属性应该先来?具有最高优先级(ToDate)或最低优先级(RunDate)的属性?

1 个答案:

答案 0 :(得分:23)

我怀疑你真的想要:

MyList
.OrderByDescending(p => p.ToDate)
.ThenByDescending(p => p.Number)
.ThenByDescending(p => p.RunDate)
.FirstOrDefault();
在您使用ThenByThenByDescending提供主要订单后,

OrderByOrderByDescending用于指定次要订单。