LINQ to Entities 不支持指定的类型成员“日期”。 DbFunctions.TruncateTime()
Posted
技术标签:
【中文标题】LINQ to Entities 不支持指定的类型成员“日期”。 DbFunctions.TruncateTime()【英文标题】:The specified type member 'Date' is not supported in LINQ to Entities. DbFunctions.TruncateTime() 【发布时间】:2020-05-30 08:37:56 【问题描述】:Question question =
db.Questions
.Where(q => DbFunctions.TruncateTime(q.Day.DayDate) == DbFunctions.TruncateTime(DateTime.Now.Date))
.Where(q => q.Order == id)
.FirstOrDefault();
当我尝试运行上述语句时,出现以下错误:
LINQ to Entities 不支持指定的类型成员“日期”
我认为DbFunctions.TruncateTime()
方法可以解决这个问题,正如我看到的许多帖子中所建议的那样,但是我仍然得到错误。我也尝试将该方法应用于数据库值,但仍然出现相同的错误。
Question question =
db.Questions
.Where(q => DbFunctions.TruncateTime(q.Day.DayDate) == DateTime.Now.Date)
.Where(q => q.Order == id)
.FirstOrDefault();
【问题讨论】:
尝试只使用:DateTime.Now
而不是 DateTime.Now.Date
嘿@Sajid 试过了,同样的错误
q.Day.DayDate
和q.Day
的类型是什么?
@SelimYıldız 日期时间
@SelimYıldız 我最初尝试过,这就是问题所在。我都试过了: DbFunctions.TruncateTime(q.Day.DayDate) == DateTime.Now.Date 和 DbFunctions.TruncateTime(q.Day.DayDate) == DateTime.Now
【参考方案1】:
您需要在 LINQ 之前将 DateTime
拉入变量:
var dateOfNow = DateTime.Now.Date;
Question question =
db.Questions
.Where(q => DbFunctions.TruncateTime(q.Day.DayDate) == dateOfNow)
.Where(q => q.Order == id)
.FirstOrDefault();
【讨论】:
我认为问题出在数据库中的日期......无论如何现在都在工作。谢谢以上是关于LINQ to Entities 不支持指定的类型成员“日期”。 DbFunctions.TruncateTime()的主要内容,如果未能解决你的问题,请参考以下文章
如何修复 ApplicationUserManager 中的“LINQ to Entities 中不支持指定的类型成员‘UserId’”
在LINQ to Entities中不支持指定的类型成员'x'。只支持初始化器实体成员和实体导航属性。
LINQ to Entities 不支持 LINQ 表达式节点类型“Invoke”
“LINQ to Entities 不支持 LINQ 表达式节点类型 'Invoke'” - 难倒!