gpt4 book ai didi

linq - EF如何按日期过滤数据

转载 作者:行者123 更新时间:2023-12-02 11:18:17 25 4
gpt4 key购买 nike

我使用 EF 4,我的实体中有一个属性 DateTimeStart,其日期格式为 16/08/2012 08:14:40,我想要查询使用 EF 并查找仅在 16/08/2012 日期内的所有实体。使用下面的代码我收到此错误

The specified type member 'Date' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.

我的代码

 DateTime dateTimeNow = DateTime.UtcNow;
DateTime dateNow = dateTimeNow.Date;
return db.EventCustoms.Where(x => x.DataTimeStart.Date <= dateNow)
.Select(y => new { y.EventId, y.EventTitle, y.DataTimeStart });

最佳答案

DateTime dateTimeNow = DateTime.UtcNow;
DateTime dateTomorrow = dateTimeNow.Date.AddDays(1);
return db.EventCustoms.Where(x => x.DataTimeStart < dateTomorrow)
.Select(y => new { y.EventId, y.EventTitle, y.DataTimeStart });

[编辑] @GibboK,详细说明一下:

Entity Framework 无法翻译 Date数据库端 DateTime 对象的属性。

您的选择是:

(1)(如上所述)重新考虑您的查询并尝试寻找一种不需要在数据库端为表中的每一行调用函数的解决方案......这也有利于查询性能

(2) 或者如果不可能,您可以使用 EntityFunctions类,它公开可以由 EF 转换为底层数据源的适当 native 函数的方法(例如 TruncateTime )。

例如

return db.EventCustoms
.Where(x => EntityFunctions.TruncateTime(x.DataTimeStart) <= dateNow)

关于linq - EF如何按日期过滤数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11983725/

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