我在比较 LINQ to entities 表达式中的日期时遇到问题。我想检查 DateTime == DateTime - whole day
。
我想这样做:
return context.Events.Any(x =>
x.UserId == id
&& x.Date >= date
&& x.Date < date.AddDays(1)
&& x.Type == EventType.StartWork);
问题是,由于 AddDays() 方法,上述查询对于 LINQ 不正确。
我试过像下面这样使用 DbFunctions:
return context.Events.Any(x =>
x.UserId == id
&& x.Date >= date
&& x.Date < DbFunctions.AddDays(date, 1)
&& x.Type == EventType.StartWork);
还有这个:
return context.Events.Any(x =>
x.UserId == id
&& DbFunctions.TruncateTime(date.Date) == date.Date
&& x.Type == EventType.StartWork);
这些查询都没有给出预期的结果。
最佳答案
只需创建 2 个日期:
var datePlusOneDay = date.AddDays(1);
return context.Events.Any(x => x.UserId == id
&& x.Date >= date
&& x.Date < datePlusOneDay
&& x.Type == EventType.StartWork);
我也不确定,但问题可能是您的日期不仅可以有日期部分,还可以有时间部分。
因此,为了确保您只选择 DateTime
变量的日期部分,您可以这样做:
date = date.Date;
var datePlusOneDay = date.AddDays(1);
关于c# - LINQ to Entities 日期时间比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38475290/