c# - 如何管理多个 OrderByDescending 条件?

标签 c# linq

我想得到一个列表,该列表按优先级为 3 个属性排序

  1. 截止日期
  2. 数量
  3. 运行日期

我的代码在这里

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

但结果不正确。

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

哪个属性应该放在第一位?具有最高优先级 (ToDate) 或最低优先级 (RunDate) 的属性?

最佳答案

我怀疑你真的想要:

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

ThenByThenByDescending用于在您使用 OrderBy 提供主要顺序后指定次要顺序或 OrderByDescending .

关于c# - 如何管理多个 OrderByDescending 条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4658188/

相关文章:

c# - 创建可重用的 Linq 查询

c# - 简单的 JOIN 语法在 Entity Framework 中不起作用

c# - Mono HTTPS异常-认证或解密失败

c# - WPF Clickonce 使用 Microsoft.Net.Sdk 发布

.net - 官方 LINQ 扩展方法

.net - Linq到SQL还是Linq到DataSet?

c# - 使用 WMI c# 控制 Microsoft NLB

c# - Rx.NET GroupByUntil 组终止,等待线程完成

c# - 这个 LINQ 查询会枚举整个枚举吗?

c# - 关于 Linq to SQL 映射对象设计的建议