2017-07-31 138 views
0
from p in table 
where ID == 201 
&& date => 20160601 
&& date <= 20160901 
select {ID, name}; 
q.Dump(); 

數據庫中的日期採用字符串簡單格式。 我想將一個SQL查詢轉換爲LINQ。在SQL中,BETWEEN運算符正在選擇給定範圍內的值。但是,BETWEEN不能與LINQ語句一起使用,所以我得到一個錯誤,它說=>不能應用於日期字段類型爲string和int的操作數。任何幫助將被佔用。我厭倦了DateTime,但它對我沒有任何作用。BETWEEN LINQ中的字符串運算符到SQL查詢

+0

它不是'=>'但是'> ='。 '=>'是lambda表達式。 – litelite

+0

你的意思是這樣嗎? date =>。20160601 – user2178940

+0

是的,那應該是'date> = 20160601' – litelite

回答

1

由於LINQ到實體不支持Convert.ToDateTime(爲什麼不呢?),你的日期格式是在一個合理的字符串格式,你可以比較的字符串:

from p in table 
where ID == 201 
&& date.CompareTo("20160601") >= 0 
&& date.CompareTo("20160901") <= 0 
select { ID, name }; 
+0

當我嘗試使用convert.ToDateTime運行它時,出現錯誤。 「LINQ to Entities不識別方法'System.DateTime ToDateTime(System.String)'方法,並且此方法不能轉換爲存儲表達式。」 – user2178940

+0

這是令人失望的 - LINQ to SQL處理它就好了......答案已更新。 – NetMage

0

試試這個工作代碼:

var q = from p in table 
where p.ID == 201 
&& p.date >= DateTime.ParseExact("20160601", "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture) 
&& p.date <= DateTime.ParseExact("20160901", "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture) 
select p; 
q.Dump();