【问题标题】:why my linq query is not giving me expected results为什么我的 linq 查询没有给我预期的结果
【发布时间】:2016-08-06 23:35:46
【问题描述】:

我有这个 sql 查询

SELECT SUM(DATEDIFF(MINUTE, InTime , OutTime)) /60
FROM Attendance
WHERE InTime BETWEEN '01-01-2016' AND '01-31-2016' 
AND Employee=63 

 var AttendofEmp = (from ab in db.Attendances 
                    where ab.InTime >= Convert.ToDateTime("01-01-2016") && 
                          ab.InTime >= Convert.ToDateTime("01-31-2016")
                         select new { ab.InTime });

它对于 sql 查询工作正常,但是当我使用 linq 查询获得相同的结果时,它给出了错误
并提前感谢...

【问题讨论】:

  • 请发布错误。
  • 错误是什么?
  • LINQ to Entities 无法识别方法 'System.DateTime ToDateTime(System.String)' 方法,并且该方法无法转换为存储表达式。
  • 对 datetime 的新实例使用 new 关键字。你不能这样转换

标签: sql linq sql-to-linq-conversion


【解决方案1】:

尝试使用new DateTime() 作为您的日期常量。此外,您可以使用SqlMethods.DateDiffMinute 获取微小差异,使用.Sum() 获取总和:

var AttendofEmp  =
    (from a in db.Attendances
     where a.InTime >= new DateTime(2016, 1, 4) && a.InTime <= new DateTime(2016, 1, 31)
     select SqlMethods.DateDiffMinute(a.InTime , a.OutTime)
    ).Sum() / 60;

【讨论】:

  • 它说 SqlMethods.DateDiffMinute 在当前上下文中不存在,我是新手...抱歉问简单的问题。我已经添加了命名空间 System.Data
  • 尝试添加System.Data.Linq.SqlClient
  • LINQ to Entities 无法识别方法 'System.Nullable1[System.Int32] DateDiffMinute(System.Nullable1[System.DateTime], System.Nullable`1[System.DateTime])' 方法,无法翻译此方法到商店表达式中。
  • 抱歉,请参阅我的编辑。我使用了错误的列名。
  • @FelixPamittan 你应该使用 DbFunctions.DiffMinutes。
【解决方案2】:

Convert.ToDateTime 转换为变量,然后在查询中使用它。

【讨论】:

    【解决方案3】:
    var Date1 = Convert.ToDateTime("01-01-2016");
    var Date2 = Convert.ToDateTime("01-31-2016")
    
         var AttendofEmp = (from ab in db.Attendances 
                            where ab.InTime >= Date1  && 
                                  ab.InTime >= Date2 
                                 select new { ab.InTime });
    

    【讨论】:

      猜你喜欢
      • 2013-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多