私たちは、このコード行に今日Nullable object must have a value
エラーが発生しました:LINQはVB.NETで短絡評価をしますか?
list = From x In Me Where x.FooDate.HasValue AndAlso x.FooDate.Value.Date >= barDate
おかしい事は、私はこれが正常に動作するために使用してください感じ(と常に基礎データにおけるNULL値の散水があった)ということです。そして論理的にはそれは私にはうまく見えます。 HasValue
とAndAlso
のチェックは、ヌルの危険から私たちを守るように、のように見えます。
しかし突然彼らはそうではないようです。何か不足していますか?
list = From x In Me Where If(x.FooDate.HasValue, x.FooDate.Value.Date >= barDate,False)
しかし、これは私には読みにくくなります。
OK、我々は、エラーを排除する、これにそれを修正することができます。何かご意見は?
更新...と告白:
私は、コードの重要なチャンクを残しラインを短くするために上記のコードを簡素化するには。私は命令の第二部で丸括弧を追加する必要があるので(私自身のずっと前の質問へのoutlined in an answerなど)短絡および演算子の優先順位のルールの
list = From x In Me Where x.FooDate.HasValue AndAlso x.FooDate.Value.Date >= fromDate And x.FooDate.Value.Date <= toDate
:元の問題のようなものを読んだことがあるはずです二x.FooDate.Value.Date
を評価LINQを停止するために:LINQは本当にAndAlsoを遵守し、元の問題をもっと詳しく見て私を強制しないことを確認するために、簡単なテストコードを投げための両方の答えに
list = From x In Me Where x.FooDate.HasValue AndAlso (x.FooDate.Value.Date >= fromDate and x.FooDate.Value.Date <= toDate)
感謝。
サンプルデータを使用してこのコードを再現できますか? –
このLINQ to Objectsですか、または他のLINQプロバイダを使用していますか?また、LINQクエリ全体を含めることはできますか?あなたは少なくともSelect部分がなくなっているように見えます – StriplingWarrior
このLINQ to SQLですか、私が何か変わったことを返すのですか?(例えばIEnumerableではありません)? – Richard