zoukankan      html  css  js  c++  java
  • LINQ to Entities 不识别方法“System.DateTime AddDays(Double)

    今天本想在linq里按照时间筛选一下超时的数据,一共两个字段FeedBackTime(计划反馈时间)、EndTime(实际反馈时间)。需求是这样的,查找数据库里所有EndTime大于FeedBackTime,且只计算到日,时分秒就不计算了。也就是说 计划时间和实际时间是同一天或实际时间小于计划时间,那么就认为不是超时的。

    开始的时候我使用了下面这种方式:

    query.Where(c =>c.FeedBackTime > c.EndTime.AddDays(1));

    结果报错:

    LINQ to Entities 不识别方法“System.DateTime AddDays(Double) 因此该方法无法转换为存储表达式

    然后换用SqlFunctions. DateDiff 方法:

    返回所指定开始日期和结束日期之间的指定 datepart 边界的计数。

    query.Where( c => SqlFunctions.DateDiff("day", c.FeedBackTime, c.EndTime) < 0);
    解决了。
     
    命名空间:   System.Data.Objects.SqlClient 
    程序集:System.Data.Entity(在 System.Data.Entity.dll 中) 
    

      

    [EdmFunctionAttribute("SqlServer", "DATEDIFF")]
    public static Nullable<int> DateDiff(
        string datePartArg,
        Nullable<DateTime> startDate,
        Nullable<DateTime> endDate
    )
    

      

    参数
    datePartArg 
    类型: System.String
    要计算时间间隔差值的日期部分。 
    
    startDate 
    类型: System.Nullable<DateTime>
    第一个日期。 
    
    endDate 
    类型: System.Nullable<DateTime>
    第二个日期。 
    
    返回值
    类型: System.Nullable<Int32>
    两个日期之间的时间间隔数。
    

      

    无法直接调用此函数。 此函数只能出现在 LINQ to Entities 查询中。
    
    此函数将被转换为数据库中对应的函数。
    

      

  • 相关阅读:
    Nginx 启动错误 Failed to read PID from /run/nginx.pid
    CentOS7 下 nginx 无法加载 Django 静态文件的问题
    SSD + 机械硬盘装 CentOS 分区的问题
    CentOS7 单机维护模式
    编译安装 redis 6.2.1
    谷歌师兄刷题笔记
    我用 DCL 写出了单例模式,结果阿里面试官不满意!
    红黑树杀人事件始末
    头条二面:详述一条 SQL 的执行流程
    jvisual远程 springBoot项目
  • 原文地址:https://www.cnblogs.com/mantishell/p/10714738.html
Copyright © 2011-2022 走看看