【问题标题】:Ordering and subordering a list using a lambda使用 lambda 对列表进行排序和子排序
【发布时间】:2011-09-19 13:49:42
【问题描述】:

我需要按状态 ==“拒绝”和日期升序排列列表,然后按状态 ==“接受”和日期降序排列。

我正在尝试以下方法,但我不知道该怎么做:

items
   .OrderBy(x => x.status == "Rejected") 
   .ThenBy(x => x.DateSubmitted)
   .ThenBy(x => x.status == "Accepted") 
   .ThenByDescending(x => x.DateSubmitted)

【问题讨论】:

  • 订购量很大!这些数据来自数据库吗?如果是这样,最好在那里订购。
  • 还有其他状态选项吗?
  • 是的,还有其他的。其他的需要按日期订购

标签: c# lambda


【解决方案1】:

您对任务的描述有点尴尬,这(我认为)会导致您的实现稍有错误。

我说:

items
   .Where(x => x.status == "Rejected") 
   .OrderBy(x => x.DateSubmitted)
   .Concat(items.
       .Where(x => x.status == "Accepted") 
       .OrderByDescending(x => x.DateSubmitted));

主要区别在于,现在不显示“拒绝”或“接受”以外的状态。 但是,我认为这是您的意图。如果您想要全套,请考虑使用

items
   .Where(x => x.status == "Rejected") 
   .OrderBy(x => x.DateSubmitted)
   .Concat(items.
       .Where(x => x.status != "Rejected") 
       .OrderByDescending(x => x.DateSubmitted));

PS。这也是假设 Linq-To-Objects。我不太熟悉 Linq-to-EF 或 Linq-to-SQL

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-11
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    • 2019-07-21
    相关资源
    最近更新 更多