2016-05-12 21 views
0

我在學習更多關於實體框架和LINQ時遇到了麻煩。VB.NET LINQ方法語法不允許來自'布爾?'的隱式轉換。到'布爾'

我想從數據庫中找到匹配特定日期的值。

我有1.250.000條目,其中36300條來自特定日期。

我使用普通的舊SQL直到現在,並且想要練習LINQ來重構我的應用程序以與EF一起工作。

你能說出我的錯誤在哪裏嗎?

第二種方式工作,但需要花費大量的時間〜15秒

enter image description here

+2

下一個錯誤:附加'ToList'來創建一個列表。根據另一個,試試:'Where(Function(d)d.ExportedDate.HasValue AndAlso d.ExportedDate.Value = exportDate)' –

+0

你可以把它作爲答案,並解釋爲什麼你的代碼沒有問題,如果你有時間。我會將此標記爲答案。謝謝! :) –

+0

這個警告不是特定於LINQ的。 – user6144226

回答

3

嘗試:

Where(Function(d) d.ExportedDate.HasValue AndAlso d.ExportedDate.Value = exportDate) 

在這條路上,你只選擇行,其中的空列ExportedDate不爲空以及它等於給定日期的地方。 ExportedDate.Value返回Date而不是d.ExportedDate這是一個Date?。如果您將Date?Date進行比較,則會得到Boolean?(因爲意味着未定義)(不是Boolean)。

這是一個有趣的差異,以C#,相關:Why is there a difference in checking null against a value in VB.NET and C#?

要解決的下一個錯誤:追加ToList創建列表。

+0

謝謝您澄清日期?和布爾?直到現在還沒有聽說過它。這將在未來幫助我。現在完全有意義。 +1 –