LINQtoentities中不支持“Date”,只支持初始化器、实体成员和实体导航属性,是这样吗?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (53)

我正在尝试执行以下代码并收到一个错误

public List<Log> GetLoggingData(DateTime LogDate, string title)
{
     var context = new LoggingEntities();
     var query = from t in context.Logs

           where t.Title == title 
           && t.Timestamp == LogDate

           select t;
     return query.ToList();
}

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

提问于
用户回答回答于

现在必须使用.NET 3.5:

            var query = from t in context.Logs
                      where t.Title == title 
                      && t.Timestamp.Day == LogDate.Day
                      && t.Timestamp.Month == LogDate.Month
                      && t.Timestamp.Year == LogDate.Year
                      select t;
用户回答回答于

如果您使用的是EF 6.0+,则可以使用DbFunctions.TruncateTime(DateTime?)(...)):

var query =
    from t in context.Logs
    where t.Title == title 
    && DbFunctions.TruncateTime(t.Timestamp) == LogDate.Date
    select t;

注:EF的早期版本DbFunctions没有时间,EntityFunctions.TruncateTime(DateTime?)可以代替使用。

扫码关注云+社区

领取腾讯云代金券