2016-05-12 1 views
0

Entity FrameworkとLINQの詳細を学ぶときに問題が発生します。VB.NET LINQメソッド構文では、 'Boolean?'の暗黙的な変換が禁止されています。 to 'Boolean'

データベースから特定の日付に一致する値を検索しようとしています。

私は1.250.000のエントリがあり、そのうちの36300個は特定の日付です。

私は今まで普通のSQLを使用していて、LINQを練習してEFで動作するようにアプリケーションをリファクタリングしたいと考えています。

私の間違いはどこですか?

第二の方法は動作しますが、試し15秒

enter image description here

+2

次のエラー: 'ToList'を追加してリストを作成します。もう1つの方法では、次のように試してください: '(d)d.ExportedDate.HasValue AndAlso d.ExportedDate.Value = exportDate)' –

+0

これを答えに入れて、あなたのコードが問題なく動作する理由を説明できます。 。私はこれを答えにします。ありがとう! :) –

+0

この警告は、LINQに固有のものではありません。 – user6144226

答えて

3

〜時間がかかる:あなたはNULL可能列ExportedDateがNULLでない行のみを選択し、このように

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

指定された日付と等しい場所。 ExportedDate.Valueは、であるd.ExportedDateとは対照的に、Dateを返します。 Date?Dateを比較すると、結果としてが得られます(Booleanではなく)。Nothingは定義されていないことを意味します。 Why is there a difference in checking null against a value in VB.NET and C#?

は、次のエラーを修正するには:リストを作成するToListを追加

これは、関連するC#に興味深い違いが、あります。

+0

日付を明確にしていただきありがとうございますか? Boolean?これまで聞いたことはありません。それは将来私を助けるでしょう。今は完全に意味をなさない。 +1 –

関連する問題