LINQ 到实体日期时间比较

2024-05-10

我在将 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 来说不正确。

我尝试使用如下 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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LINQ 到实体日期时间比较 的相关文章

随机推荐