LINQ to Entities DateTime比较 [英] LINQ to Entities DateTime Compare

查看:124
本文介绍了LINQ to Entities DateTime比较的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

比较LINQ中的日期和实体表达式,我有问题。我想检查一下 DateTime == DateTime - 整天



我想这样做:

 返回上下文。 Events.Any(x => 
x.UserId == id
&& x.Date> = date
&&&& x.Date< date.AddDays 1)
&& x.Type == EventType.StartWork);

问题是上述查询是不正确的LINQ,因为AddDays()方法。 >

我试图使用如下所示的DbFunctions:

  return context.Events .Any(x => 
x.UserId == id
&& x.Date> = date
&& x.Date< DbFunctions.AddDays ,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
&&日期< datePlusOneDay
&& x.Type == EventType.StartWork);

另外我不确定但是问题可能是你的日期不仅可以是日期部分,还可以时间部分。



所以要确保你只选择你的 DateTime 变量的日期部分,你可以这样做: p>

  date = date.Date; 
var datePlusOneDay = date.AddDays(1);


I have problem with comparing dates in LINQ to entities expression. I would like to check if DateTime == DateTime - whole day.

I wanted to do it like that:

 return context.Events.Any(x => 
                            x.UserId == id 
                            && x.Date >= date 
                            && x.Date < date.AddDays(1) 
                            && x.Type == EventType.StartWork);

The problem is that above query is not correct with LINQ because of AddDays() method.

I`ve tried to use DbFunctions like below:

return context.Events.Any(x => 
                            x.UserId == id 
                            && x.Date >= date 
                            && x.Date < DbFunctions.AddDays(date, 1) 
                            && x.Type == EventType.StartWork);

Also this one:

  return context.Events.Any(x => 
                                x.UserId == id 
                                && DbFunctions.TruncateTime(date.Date) == date.Date 
                                && x.Type == EventType.StartWork);

None of these queries are not giving expected results.

解决方案

Just create 2 dates:

var datePlusOneDay = date.AddDays(1);

return context.Events.Any(x => x.UserId == id 
                         && x.Date >= date 
                         && x.Date < datePlusOneDay 
                         && x.Type == EventType.StartWork);

Also I'm not sure but problem could be that your date can have not only date part but also time part.

So to be sure that you select only date part of your DateTime variable you can do like this:

date = date.Date;
var datePlusOneDay = date.AddDays(1);

这篇关于LINQ to Entities DateTime比较的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆