【问题标题】:Compare DateTime in EF Core Linq Query比较 EF Core Linq 查询中的 DateTime
【发布时间】:2017-06-27 22:20:26
【问题描述】:

我在我的项目中使用 .NETCore 和 EF Core。我无法使用 DateTimes 查询带有表达式的项目。

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.

有人可以解释我做错了什么吗?提前致谢!

【问题讨论】:

    标签: c# entity-framework linq asp.net-core


    【解决方案1】:

    试试这个...

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

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

    【讨论】:

    • 谢谢!我想我越来越近了......我现在在我的输出中看到了查询,但我的结果仍然是“一切”。在我的输出中,我看到了这个 ``` Executed DbCommand [Parameters=[@__date_0='?']....] .. FROM ... 其中 [x].Date >= @__date_0 AND ... ```
    • 如果没有更多上下文,很难说现在发生了什么...table 的模型是什么样的?您也可以尝试直接在 SSMS 中运行生成的 EF 查询并尝试从那里进行调试。
    • 该模型具有“日期”属性,它是“日期时间”类型。我试图确保那些匹配。
    猜你喜欢
    • 1970-01-01
    • 2014-06-19
    • 2020-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-30
    • 1970-01-01
    • 2021-04-27
    相关资源
    最近更新 更多