我在将LINQ中的日期与实体表达式进行比较时遇到问题.我想检查一下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上面的查询不正确.
我试过使用如下的DbFunction:
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);