使用lambda对列表进行排序和子排序

本文关键字:排序 lambda 列表 使用 | 更新日期: 2023-09-27 18:08:56

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

我正在尝试以下,但我不确定如何去做:

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

使用lambda对列表进行排序和子排序

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

我说:

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));

p。这也是假设了对象链接。我不是很精通Linq-to-EF或Linq-to-SQL