【发布时间】:2019-02-20 04:27:24
【问题描述】:
假设我的公司有客户有订单。 在一个搜索查询中,我想以一种将“具有最新订单的公司放在首位”的方式设置订单。 (希望这足够清楚)。
.OrderByDescending(x =>
x.Customers.Max(c => c.Orders.Any() ?
y.Orders.Max(o => (DateTime?) o.DateCreatedUtc)
: DateTime.MinValue)
)
- 如果客户没有订单,则将最新订单日期视为 DateTime.MinValue
目前我收到以下警告: 无法翻译 LINQ 表达式“Max()”并将在本地计算
我们可以重写它以在服务器上进行评估吗?
【问题讨论】:
-
这和你之前的问题完全一样。确保外部
Max(和任何Max)使用可为空的重载,例如x.Customers.Max(c => c.Orders.Max(o => (DateTime?) o.DateCreatedUtc))。或x.Customers.SelectMany(c => c.Orders).Max(o => (DateTime?) o.DateCreatedUtc) -
谢谢@IvanStoev。我想知道这个问题是否与更深的孩子的最大值有关。
-
不客气。实际上嵌套的
Max可能由于当前 EFC 的另一个限制而无法工作,但SelectMany应该。如果没有,请告诉我重新打开问题。 -
SelectMany 成功了。太棒了!
标签: c# entity-framework entity-framework-core ef-core-2.2