2010-12-18 4 views
2

期限切れになっていないクーポンのリストを選択する必要があります。それは次のとおりです。LINQ-to-SQLのどこの条件でnull可能なDateTimeを処理するか?

where Coupon.ExpiresOn > DateTimeUtc.Now 

問題はCoupon.ExpiresOnは日時(?のDateTime)のNULL可能であるということです。上記のコードは、Coupon.ExpiresOnにnull値を持つクーポンを返しません。ヌル値を返すにはどのように変更できますか?ご協力ありがとうございました。

答えて

5

をそのように、あなたの中にNULLを許可:

Coupon.ExpiresOn == nullの|| クーポン。有効期限> DateTimeUtc.Now

3

は、またはあなたの場所の声明に追加:

where !Coupon.ExpiresOn.HasValue || Coupon.ExpiresOn.Value > DateTimeUtc.Now 
+0

実際には、 Linq-to-SQLはC#ショートカットを短絡するので、実際にはステートメントの両側が呼び出されます。あなたの答えはまだ正しく動作しますが、ここでLinq-to-SQLを使用していることを覚えておく必要があります(質問者は少なくともあります)。 SQL Serverは短絡しませんし、大文字と小文字を区別しないため、Linqの使用方法に細心の注意を払わなければなりません。 – mattmc3

+0

@ matmc3それは非常に良い点ですが、私はそれを考えていませんでした。私は私の答えを更新しました。ありがとう! – sgriffinusa

関連する問題