使用二级排序对 linq 查询进行排序 [重复]

Posted

技术标签:

【中文标题】使用二级排序对 linq 查询进行排序 [重复]【英文标题】:Ordering linq query with secondary sort [duplicate] 【发布时间】:2012-08-03 15:20:51 【问题描述】:

可能重复:Multiple “order by” in LINQ

我有一个订单列表,我需要按订单日期排序,然后按订单价格进行二次排序。自从我尝试了 orders.OrderBy(o => o.Date).OrderBy(o => o.Price) 后,我不确定该怎么做,但它不起作用。任何帮助深表感谢。谢谢

【问题讨论】:

奇怪的是,我今天看到了多少完全相同的问题。 我不是故意粗鲁,但我只是用谷歌搜索了Ordering linq query with secondary sort,并在SO 帖子的第一页找到了答案。 实际上,它是this、this、this、this、this、this等的副本 对不起,我是这个网站的新手...试图找到它,但我错过了。谢谢。 【参考方案1】:

你想使用 ThenBy 函数:

orders.OrderBy(o => o.Date).ThenBy(o => o.Price)

【讨论】:

【参考方案2】:

另一种选择是使用 LINQ 查询语法而不是方法语法:

 List<Order> sortedOrders = from o in orders
 orderby o.Date, O.Price
 select o;

【讨论】:

如果我理解正确 - 如果 o.Date 有一堆相同日期值的记录,则使用逗号分隔的“orderby”中的两个字段会导致分组形式 - 排序记录 O.Price 在匹配的日期内升序。 ? 是的,没错。与接受的答案相同。只是使用不同的语法。【参考方案3】:

你可以使用:

orders.OrderBy(o => o.Date).ThenBy(o => o.Price)

【讨论】:

以上是关于使用二级排序对 linq 查询进行排序 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

LINQ 学习路程 -- 查询操作 OrderBy & OrderByDescending

使用 LINQ 对不同的值进行排序 [重复]

Linq 常用查询操作符

C# LINQ 组按属性集合,然后按列表定义的显式顺序对每个组进行排序[重复]

Linq-排序Order By

Linq-排序Order By