在EF Core Linq查询中比较DateTime

9

我在我的项目中使用.NET Core和EF Core。我无法使用日期时间表达式查询项目。

return _context.table
       .Where( x=> x.CPULoad > 90 && X.Date >= DateTime.Now.AddMinutes(-5));

CPULoad的工作非常完美,但是日期时间比较输出如下。
The LINQ expression '(([x].Date >= DateTime.Now.AddMinutes(-5))' could not be translated and will be evaluated locally.

有人能解释一下我做错了什么吗?提前感谢!
1个回答

31

试试这个...

var compareDate = DateTime.Now.AddMinutes(-5);
return _context.table
    .Where( x=> x.CPULoad > 90 && X.Date >= compareDate);

这里的问题本质上是实体框架不知道如何将DateTime.Now.AddMinutes(-5)转换为SQL,因此您需要获取该值,然后将其传递给实体框架。


谢谢!我觉得我离成功更近了...现在我在输出中看到了查询,但我的结果仍然是“everything”。在我的输出中,我看到了这个:Executed DbCommand [Parameters=[@__date_0='?'].......] SELECT [x]/[id], [x]... FROM ... Where [x].Date >= @__date_0 AND ... - Josh Lavely
没有更多的上下文很难说现在发生了什么... table 的模型是什么样子的?您也可以尝试在 SSMS 中直接运行生成的 EF 查询,并从那里尝试进行调试。 - Shane Ray
该模型具有属性“日期”,其类型为“DateTime”。我尝试确保它们匹配。 - Josh Lavely

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接