2012-09-19 153 views
1

我想將日期與SQL中的日期時間字段進行比較。我試試這個:在Lambda中比較日期表達式

Dim entry = db.Tbl_Hydrations.Where(Function(x) x.Hyd_Create_Date.Date = _date1) 

但是,我得到的錯誤是:

The specified type member 'Date' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported. 

在線:

If entry.Any Then 
+1

只是爲了確保,你想要做的僅僅是比較數據庫日期時間字段的「日期」部分,而不是「時間」部分? –

+0

是的,因爲時間是12:00:00。例如'_date' ='9/18/2012 12:00:00 AM',而數據庫字段'x.Hyd_Create_Date' ='9/18/2012 06:18:55'。我試圖讓所有物品在一整天內,而不是一天中的任何特定時間。 – user1477388

+0

最好的答案是否仍然存在'看起來像LINQ to Entities不支持Date屬性。 '需要更新當前的框架版本?對'lambda日期比較'的搜索使這個頁面在gjuice上顯得很高,但是現在確實有更好的練習方法了嗎? thx – justSteve

回答

3

好像LINQ到實體不支持日期屬性。你可以試着做兩個日期之間的比較作爲一種解決方法:

Dim nextDay As DateTime = _date1.AddDays(1) 

Dim entry = db.Tbl_Hydrations.Where(Function(x) x.Hyd_Create_Date >= _date1 AndAlso x.Hyd_Create_Date < nextDay) 
+0

謝謝,只要沒有其他人提交更好的答案,我會接受。我希望有一種不涉及其他變量的方法。 – user1477388

+1

我能想到的唯一選擇是將數據庫字段拆分爲兩個字段,一個用於日期部分,另一個用於時間部分。 –

+0

希望看到更新。 – justSteve

1

不知道的語法(而不是VB的人,但你可以使用canonical functions

Dim entry = db.Tbl_Hydrations 
.Where(Function(x) EntityFunctions.CreateDateTime 
(x.Hyd_Create_Date.Year, x.Hyd_Create_Date.Month, x.Hyd_Create_Date.Day, 0, 0, 0) = _date1); 
+0

我現在超越了這個,所以我無法測試,但它看起來不錯+1。謝謝。 – user1477388