使用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)
您对任务的描述有点笨拙,(我认为)这会导致您的实现略有错误。
我说:
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