59 datetime linq-to-entities entity-framework
我正在尝试使用LINQ with Entity Framework确定两个日期之间的天数.它告诉我它不能识别System.TimeSpan类上的Subtract
这是我在LINQ查询中的哪个部分.
where ((DateTime.Now.Subtract(vid.CreatedDate).TotalDays < maxAgeInDays))
Run Code Online (Sandbox Code Playgroud)
这是我在VS.NET调试器中收到的错误
{"LINQ to Entities无法识别方法'System.TimeSpan Subtract(System.DateTime)'方法,并且此方法无法转换为商店表达式."}
我是做错了还是有更好的方法来获得实体框架中2个DateTimes之间的天数?
谢谢迈克尔
Mor*_*sen 97
在这种情况下,接受的答案更好,但作为参考,您可以使用EntityFunctions
该类来执行日期操作等.
where (vid.CreatedDate >= EntityFunctions.AddDays(DateTime.Now, -maxAgeInDay))
Run Code Online (Sandbox Code Playgroud)
小智 43
以下是我如何使用它
我定义了一个代表最早日期的日期时间变量
DateTime oldestDate = DateTime.Now.Subtract(new TimeSpan(maxAgeInDays, 0, 0, 0, 0));
...
Run Code Online (Sandbox Code Playgroud)
然后我修改了LINQ查询的where部分
where (vid.CreatedDate >= oldestDate )
Run Code Online (Sandbox Code Playgroud)
像魅力一样工作 - 感谢Micah让我思考表达树
Lad*_*nka 19
您还可以使用System.Data.Objects.EntityFucntions
:
currentDate = DateTime.Now;
...
where EntityFunctions.DiffDays(currentDate, vid.CreatedDate) < maxAgeIdDays
Run Code Online (Sandbox Code Playgroud)
所有函数EntityFunctions
仅用于Linq到实体,并映射到SQL函数.