我在學習更多關於實體框架和LINQ時遇到了麻煩。VB.NET LINQ方法語法不允許來自'布爾?'的隱式轉換。到'布爾'
我想從數據庫中找到匹配特定日期的值。
我有1.250.000條目,其中36300條來自特定日期。
我使用普通的舊SQL直到現在,並且想要練習LINQ來重構我的應用程序以與EF一起工作。
你能說出我的錯誤在哪裏嗎?
第二種方式工作,但需要花費大量的時間〜15秒
我在學習更多關於實體框架和LINQ時遇到了麻煩。VB.NET LINQ方法語法不允許來自'布爾?'的隱式轉換。到'布爾'
我想從數據庫中找到匹配特定日期的值。
我有1.250.000條目,其中36300條來自特定日期。
我使用普通的舊SQL直到現在,並且想要練習LINQ來重構我的應用程序以與EF一起工作。
你能說出我的錯誤在哪裏嗎?
第二種方式工作,但需要花費大量的時間〜15秒
嘗試:
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
創建列表。
謝謝您澄清日期?和布爾?直到現在還沒有聽說過它。這將在未來幫助我。現在完全有意義。 +1 –
下一個錯誤:附加'ToList'來創建一個列表。根據另一個,試試:'Where(Function(d)d.ExportedDate.HasValue AndAlso d.ExportedDate.Value = exportDate)' –
你可以把它作爲答案,並解釋爲什麼你的代碼沒有問題,如果你有時間。我會將此標記爲答案。謝謝! :) –
這個警告不是特定於LINQ的。 – user6144226