使用LINQ to Entities(实体框架)比较日期

时间:2012-12-06 10:17:15

标签: c# entity-framework datetime

我需要从我的数据库返回一个项目列表,该列表在项目提供的日期的预定时间到期。我的错误的代码如下:

return All().Where(o => new DateTime(o.expiry_date.Year, o.expiry_date.Month, o.expiry_date.Day, 17, 30, 0) >= DateTime.Now)

我得到的错误是:

LINQ to Entities中仅支持无参数构造函数和初始值设定项

有谁知道如何解决这个问题?

3 个答案:

答案 0 :(得分:30)

请改用EntityFunctions。也许是CreateDateTime方法。

所以也许这样:

return All().Where(o => EntityFunctions.CreateDateTime(o.expiry_date.Year, o.expiry_date.Month, o.expiry_date.Day, 17, 30, 0) >= DateTime.Now)

<强>更新

使用EF6时,请改用DbFunctions

答案 1 :(得分:8)

您可以使用:

var result = await db.Articles
          .Where(TruncateTime(x.DateCreated) >= EntityFunctions.TruncateTime(DateTime.Now))
          .ToListAsync();

答案 2 :(得分:2)

请使用:

return All().Where(o => EntityFunctions.CreateDateTime(o.expiry_date.Year, o.expiry_date.Month, o.expiry_date.Day, 17, 30, 0) >= DateTime.Now)