gpt4 book ai didi

linq - LINQ 查询中的 DayOfWeek

转载 作者:行者123 更新时间:2023-12-04 10:04:50 25 4
gpt4 key购买 nike

我有一个表示星期几的简单整数列表。我正在尝试检查我的实体的 Date 属性是否在选定的一周内。但是,如果我尝试在针对数据库的查询中传递它,如下所示:

query.Where(e => selectedDaysOfWeek.Contains((int)e.Date.DayOfWeek));

我得到了异常(exception):

The LINQ expression ... could not be translated. Either rewrite the query in a form that can be translated, or switch to client evaluation explicitly by inserting a call to either AsEnumerable(), AsAsyncEnumerable(), ToList(), or ToListAsync().



如果我另一方面,首先通过调用 ToList() 执行查询(例如)然后在结果列表上添加相同的 where 条件,它的工作原理:
var items = query.ToList();
items = items.Where(e => selectedDaysOfWeek.Contains((int)e.Date.DayOfWeek)).ToList();

虽然在我的情况下这是可以接受的,但我想从数据库中获取更少的项目。有没有办法在按我最初的意图查询 db 时检查 DayOfWeek?

最佳答案

您正在访问 DayOfWeek属性(property)来自 DateTime查询中的引用。

Entity Framework “不知道”如何将其转换为 SQL,因此在您收到异常的第一段代码中。

在第二部分中,在您从 .ToList() 处的数据库中获取所有数据后,它正在工作。调用,以及 .Where过滤正在内存中发生。

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

关于linq - LINQ 查询中的 DayOfWeek,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61638030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com