我的代码:
var list3 = _ItemForCheckService
.GetBy(x => x.Status != Status.Deleted)
.OrderBy(x => x.Approver != null || x.Approver2 != null)
.ThenBy(x => x.ModifiedDate)
.ToList();
approver = guid approver2 = guidmodifieddate = datetime
如果我的列表项中有任何一个具有审批者或approver2值(不为null),则它必须位于我的列表顶部。 如果没有任何项目具有批准者或批准者2的价值,则应按其修改日期列出(最早的是最早的)。
在我的代码中,它不起作用。
谢谢。
编辑:我仍尝试OrderByDesc
仍看不到
分组批准人或批准人2结果
在我页面的顶部或底部上。它们没有组合在一起
答案 0 :(得分:1)
如果没有测试数据来确定错误,则需要一个水晶球。您可能在这里遇到了几个问题:
false < true
起,您可能要使用.OrderByDescending(...)
而不是.OrderBy()
Guid
是struct
,所以不可能 null
(但可以与null
进行比较以返回true
)Approver
和Approver2
的项目,然后放置具有单批准者的项目,然后具有没有。代码(假设Approver
和Approver2
的类型为Guid
)
var list3 = _ItemForCheckService
.GetBy(x => x.Status != Status.Deleted)
.OrderByDescending(x => x.Approver != default(Guid) || x.Approver2 != default(Guid))
.ThenBy(x => x.ModifiedDate)
.ToList();
或者如果我们要实现点3.
:
var list3 = _ItemForCheckService
.GetBy(x => x.Status != Status.Deleted)
.OrderBy(x => (x.Approver != default(Guid) ? 0 : 1) +
(x.Approver2 != default(Guid) ? 0 : 1))
.ThenBy(x => x.ModifiedDate)
.ToList();