2013-10-10 27 views
2

在我的表中有一個包含日期的varchar字段。 (那怎麼SAP店日期) 反正運行鍼對該領域類似的查詢:EF在linq查詢中比較表示SAP日期的字符串?

from c in db.Set<MyTable>() 
    where c.Date >= "20120921" && c.Date <= "20121021" 
    select c 

我試圖做一個String.Compare,但EF無法翻譯與SQL。

where Stirng.Compare(c.Date, "20120921") >= 0 

我也嘗試將兩個字符串轉換爲int並進行比較,並且EF不支持。

+0

這有什麼錯頂部的「類似」的查詢? –

+0

爲什麼不能用格式解析日期然後在查詢中使用? – Roar

+0

@JoachimIsaksson第一個不會編譯,不能將運算符應用到字符串 – aryaxt

回答

2

您可以嘗試使用SqlFunctions.DateDiff方法重載需要三個string S,這樣的:

var res = from c in db.Set<MyTable>() 
    where SqlFunctions.DateDiff("dd", c.Date, "20120921") >= 0 
     && SqlFunctions.DateDiff("dd", c.Date, "20121021") < 0 
    select c 
+0

是的,它的工作感謝,我不得不用「dd」替換「ms」 – aryaxt

+0

@aryaxt完美,謝謝你讓我知道你把'ms'改成了'dd' - 我編輯了答案,以防其他人需要做這種事情。我還編輯了標題以提及SAP字符串,使您的問題更容易找到。 – dasblinkenlight

+0

供參考:這使查詢非常緩慢 – aryaxt