首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LINQ查询中的DayOfWeek

LINQ查询中的DayOfWeek
EN

Stack Overflow用户
提问于 2020-05-06 14:40:03
回答 1查看 854关注 0票数 2

我有一个简单的整数列表,表示一周中的几天。我正在尝试检查我的实体的Date属性是否在选定的一周中。但是,如果我试图在查询中传递它,目标是这样的数据库:

代码语言:javascript
复制
query.Where(e => selectedDaysOfWeek.Contains((int)e.Date.DayOfWeek));

我有个例外:

的LINQ表达式..。无法翻译。要么用可以翻译的表单重写查询,要么通过插入对AsEnumerable()、AsAsyncEnumerable()、ToList()或ToListAsync()的调用,显式地切换到客户端计算。

另一方面,如果我首先通过调用ToList() (例如)来执行查询,然后在结果列表上添加相同的where条件,它会工作:

代码语言:javascript
复制
var items = query.ToList();
items = items.Where(e => selectedDaysOfWeek.Contains((int)e.Date.DayOfWeek)).ToList();

虽然在我的例子中,这是可以接受的,但我希望从数据库中获取更少的项目。在查询db时是否有一种检查DayOfWeek的方法,这是我最初的意图?

EN

回答 1

Stack Overflow用户

发布于 2020-05-06 15:36:58

您正在从查询中的DayOfWeek引用访问DateTime属性。

实体框架“不知道”如何将其转换为SQL,从而在第一段代码中得到异常。

在第二部分中,在.ToList()调用从数据库中获取所有数据之后,.Where筛选正在内存中进行。

如果希望在数据库端实现该逻辑,则必须编写自己的SQL语句。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61638030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档