使用二级排序对 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