【问题标题】:Ordering linq query with secondary sort [duplicate]使用二级排序对 linq 查询进行排序 [重复]
【发布时间】: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等的副本
  • 对不起,我是这个网站的新手...试图找到它,但我错过了。谢谢。

标签: c# linq


【解决方案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)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-27
      • 2011-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-01
      • 1970-01-01
      相关资源
      最近更新 更多