【发布时间】:2020-08-21 13:59:21
【问题描述】:
我有一个代表星期几的简单整数列表。我正在尝试检查我的实体的 Date 属性是否在选定的星期几内。但是如果我尝试在这样的目标数据库的查询中传递它:
query.Where(e => selectedDaysOfWeek.Contains((int)e.Date.DayOfWeek));
我遇到了异常:
无法翻译 LINQ 表达式...。以可翻译的形式重写查询,或通过插入对 AsEnumerable()、AsAsyncEnumerable()、ToList() 或 ToListAsync() 的调用显式切换到客户端评估。
另一方面,如果我首先通过调用 ToList() (例如)执行查询,然后在结果列表中添加相同的 where 条件,它可以工作:
var items = query.ToList();
items = items.Where(e => selectedDaysOfWeek.Contains((int)e.Date.DayOfWeek)).ToList();
虽然在我的情况下这是可以接受的,但我想从数据库中获取更少的项目。有没有办法在查询 db 时检查 DayOfWeek 是我最初的意图?
【问题讨论】:
-
待跟踪问题SQL Server: DateTime.DayOfWeek translation #10404。可能会在某个 vNext 中的某一天......
标签: linq entity-framework-core ef-core-3.1