LINQ to Entities用于减去2个日期

我试图确定使用LINQ与实体框架的两个日期之间的天数。 它告诉我,它不能识别System.TimeSpan类中的减法

这是我在LINQ查询的哪一部分。

where ((DateTime.Now.Subtract(vid.CreatedDate).TotalDays < maxAgeInDays))

这是我在VS.NET调试器中收到的错误

{“LINQ to Entities不识别方法'System.TimeSpan Subtract(System.DateTime)'方法,并且此方法不能转换为存储表达式。”}

我做错了什么或者是否有更好的方法来获取实体框架中2个DateTime之间的天数?

谢谢迈克尔


在这种情况下,接受的答案是更好的,但为了参考,您可以使用EntityFunctions类对日期执行操作等等。

where (vid.CreatedDate >= EntityFunctions.AddDays(DateTime.Now, -maxAgeInDay))

这是我如何运作的

我定义了一个代表最早日期的日期时间变量

DateTime oldestDate = DateTime.Now.Subtract(new TimeSpan(maxAgeInDays, 0, 0, 0, 0));
...

然后我修改了LINQ查询的where部分

where (vid.CreatedDate >= oldestDate )

像魅力一样工作 - 感谢弥迦让我考虑表达树


你也可以使用System.Data.Objects.EntityFucntions

currentDate = DateTime.Now;

...
where  EntityFunctions.DiffDays(currentDate, vid.CreatedDate) < maxAgeIdDays 

EntityFunctions所有函数仅用于Linq到实体,并映射到SQL函数。

链接地址: http://www.djcxy.com/p/37645.html

上一篇: LINQ to Entities for subtracting 2 dates

下一篇: LINQ OrderBy Name ThenBy ChildrenCollection.Name