当前位置:  开发笔记 > 编程语言 > 正文

LINQ to Entities DateTime比较

如何解决《LINQtoEntitiesDateTime比较》经验,为你挑选了1个好方法。

我在将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);

这些查询都没有给出预期的结果.



1> teo van kot..:

只需创建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);

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有