【问题标题】:Entity Framework refusing Date comparison The specified type member 'Date' is not supported in LINQ to Entities实体框架拒绝日期比较 LINQ to Entities 不支持指定的类型成员“日期”
【发布时间】:2021-11-11 14:41:21
【问题描述】:

我正在尝试检索与今天日期匹配的所有记录,但运行时出现此异常

System.NotSupportedException:“LINQ to Entities 不支持指定的类型成员“日期”。仅支持初始化程序、实体成员和实体导航属性。'

我试过这个解决方案 https://stackoverflow.com/a/14601775/13211556

但没有影响相同的异常,还尝试将数据库中的列更改为仅日期而不是日期时间。

代码如下:

List<int> Ids = context.Record
            .Where(rec => DbFunctions.TruncateTime(rec.Date.Date) == date)
            .Select(rec => rec.Id)
            .ToList();

【问题讨论】:

  • 您的日期列是否允许空值?
  • 试试这个DbFunctions.TruncateTime(rec.Date?.Date)
  • @djv 不,它没有
  • @Hossein Giving error on the operator '?'
  • ? 依赖于我的问题得到了肯定的回答:)

标签: c# entity-framework linq


【解决方案1】:

为了获得更好的性能,您必须使用比较运算符。你有 date 没有时间,所以加一天并编写适当的 LINQ 查询。

var nextDay = date.AddDays(1);

List<int> Ids = context.Record
            .Where(rec => rec.Date >= date && rec.Date < nextDay)
            .Select(rec => rec.Id)
            .ToList();

仅在这种情况下索引

【讨论】:

  • 这仅在列可以为空的情况下才有效如果我希望它不能为空
  • 抱歉,删除了不需要的.Date后缀。
猜你喜欢
  • 2020-05-30
  • 2013-12-22
  • 2012-07-20
  • 2023-03-13
  • 1970-01-01
  • 2015-01-27
  • 2012-07-17
  • 2013-03-20
  • 1970-01-01
相关资源
最近更新 更多