我在下面的LINQ查询中遇到了麻烦。我对这个错误进行了大量的研究,几乎我发现的所有内容都引用了DbFunctions.TruncateTime(),但是这似乎对我来说似乎没有用。我希望有人可以看看这个,让我知道我哪里出错了。我想要做的只是比较日期时间的日期部分,但我继续得到例外: LINQ to Entities不支持指定的类型成员'Date'。仅支持初始值设定项,实体成员和实体导航属性。
if (!db.MaintenanceWindows.Any(x => x.Id == Id &
DbFunctions.TruncateTime(x.BlockedDay) == DateTime.UtcNow.Date &
x.IsDeleted.Value == false))
{
...
}
TIA
答案 0 :(得分:0)
它并没有抱怨DbFunctions.TruncateTime
。它抱怨DateTime.UtcNow.Date
建议A:
if (!db.MaintenanceWindows.Any(x => x.Id == Id &&
DbFunctions.TruncateTime(x.BlockedDay) == DbFunctions.TruncateTime(DateTime.UtcNow) &&
x.IsDeleted.Value == false))
建议B:
var utcNow = DateTime.UtcNow.Date;
if (!db.MaintenanceWindows.Any(x => x.Id == Id &&
DbFunctions.TruncateTime(x.BlockedDay) == utcNow &&
x.IsDeleted.Value == false))
此外,您将需要表达式中的“逻辑AND”(&&
)。