2015-05-26 52 views
2

我有一個smalldatetime字段,我試圖轉換爲LINQ中的字符串。 這是我當前的代碼:LINQ中的Smalldatetime ToString

var entities = from a in dbcontext.Article 
where a.PubDateTime.ToString("ddMMyyyy") == pubDate 
select a; 

不過,我得到以下錯誤:

LINQ to Entities does not recognize the method 'System.String ToString(System.String)' method, and this method cannot be translated into a store expression.

我看了幾個帖子,但是我似乎無法得到它的工作。 任何指針都會很棒。

+2

可以先將'pubDate'轉換爲DateTime嗎? –

+0

爲什麼不使用'DateTime.Compare'來代替? –

回答

1

該錯誤自身說明,您不能使用用戶定義的方法,無法通過Linq to Entities將其轉換爲SQL。您可以看到完整的文章here

假設你pubDate是一個字符串,請嘗試以下代碼

DateTime date = DateTime.Parse(pubDate); // You may have to specify your own format 
DateTime date2 = DateTime.ParseExact(pubDate,"ddMMyyyy",System.Globalization.CultureInfo.Invarian‌​tCulture); // Like suggested by XenoPuTtSs 

// choose date or date2, according to your needs 

var entities = from a in dbcontext.Article 
    where a.PubDateTime == date 
    select a; 

您也可能會遇到麻煩與時間比較日期這樣的情況下,所以你可以檢查DbFunctions.TruncateTime

+1

你可以用它來解析日期。 DateTime.ParseExact(pubdate的, 「DDMMYYYY」,System.Globalization.CultureInfo.InvariantCulture); – XenoPuTtSs

+1

@XenoPuTtSs,謝謝,我更新了我的答案。 :) – Atlasmaybe