c# - Linq 按 2 列(创建和修改)排序,以较大者为准

标签 c# linq mongodb

我有一个名为 queryIQueryable,并且需要返回按上次修改日期排序的结果列表。

该实体有两列,分别称为 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/

相关文章:

c# - "Server failed to resume the transaction"- 使用 LINQ to Classes 的最佳实践

javascript - 类型错误 : todo is not a function

c# - 我应该停止违反 .NET 事件指南吗?

c# - ExecuteScalarAsync 挂起但 ExecuteScalar 立即返回

c# - 在 Code First Fluent API 中定义关系的优势?

c# - 使用 TestStack.White 设置 `VirtualizingPanel.IsVirtualizing`

c# - 使用 Linq 获取精化集

c# - 在 .Net 核心 2 中使用 SQL Server 文件流

linux - 更改 Mongodb 的 dbPath

json - 使用 mongodb java 驱动程序运行 native mongodb 查询