DbFunctions.TruncateTime()仍然生成“类型成员'日期'不受支持”错误

时间:2017-07-07 14:19:11

标签: c# linq entity-framework-6

我在下面的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

1 个答案:

答案 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”(&&)。