2016-04-15 136 views
0

我有這樣的SQL查詢爲什麼我的LINQ查詢不給我預期的結果

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查詢得到同樣的結果提示錯誤
和感謝提前...

+0

請發佈錯誤。 –

+0

錯誤是什麼? – Friyank

+0

LINQ to Entities不識別方法'System.DateTime ToDateTime(System.String)'方法,並且此方法無法轉換爲存儲表達式。 – akash

回答

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; 
+0

它說SqlMethods.DateDiffMinute不存在於當前的上下文中,我對此是新的...抱歉提出簡單的問題。我已經添加了命名空間System.Data – akash

+0

嘗試添加'System.Data.Linq。 SqlClient' –

+0

它的工作原理,但給出了這個錯誤 – akash

1

轉換Convert.ToDateTime到一個變量,然後在查詢中使用它。

1
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 }); 
相關問題