使用DbFunctions截断DateTime

时间:2016-02-15 15:07:00

标签: c# entity-framework date

我正在尝试仅按日期进行数据过滤(截断时间)。数据库中的字段是DateTime。

作为参考,我尝试了这个不起作用的解决方案: 'Date' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported 我应该使用被 DbFunctions 取代的 EntityFunctions ,但是,它仍然不起作用。

所以我搜索了更多试图找到一些看起来像我的代码,然后我找到了另一个链接:Using DbFunctions I get error: The specified type member 'Date' is not supported in LINQ to Entities 但我仍然得到同样的错误:

  

LINQ to Entities不支持指定的类型成员“Date”。仅支持初始化程序,实体成员和实体导航属性。

有什么建议吗?

我的代码:

var data = DateTime.Now.Date;
PostVisualizacoes visualizacao = db.PostVisualizacoes.Where(v => v.UsuId == usuario.UsuId && v.PosId == post.PosId && DbFunctions.TruncateTime(v.PosVisData.Date) == data).FirstOrDefault();

1 个答案:

答案 0 :(得分:5)

如果您从.Date媒体资源中移除PosVisData来电,则可以避免该异常:

var data = DateTime.Now.Date;
PostVisualizacoes visualizacao = db.PostVisualizacoes.Where(v => v.UsuId == usuario.UsuId && v.PosId == post.PosId
                                                              && DbFunctions.TruncateTime(v.PosVisData) == data)
                                                     .FirstOrDefault();

DateTime属性中提取日期部分是TruncateTime静态方法的作用。