我有一个名为 query 的 IQueryable
,并且需要返回按上次修改日期排序的结果列表。
该实体有两列,分别称为 CreatedOn 和 ModifiedOn。 CreatedOn 不可为空,并且在创建新实体时设置。仅当实体被修改时才设置另一列 ModifiedOn。
这里的最后修改日期是指按 CreatedOn 或 ModifiedOn 中较大的一个进行排序。
以下代码不适用于 MongoDB C# 驱动程序。
query = query.OrderBy(e => e.ModifiedOn == null ? e.CreatedOn : e.ModifiedOn);
它抛出一个NotSupportedException
"Unable to determine the serialization information for the expression: ."
我知道为什么它会抛出 NotSupportedException。我正在寻找一种对实体进行排序的解决方案。还有其他方法可以达到我想要的结果吗?
该解决方案应该适用于 IQueryable,而不是内存中的 IEnumerable。实体的数量可能相差很大。
最佳答案
在 c# 8 和 postgresql 中这项工作:
query = query.OrderBy(e => e.LastModified ?? e.Created);
关于c# - Linq 按 2 列(创建和修改)排序,以较大者为准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30154907/