が であるDateEnable
とするDateTime?
と、次のことができます。
// Get today.
DateTime today = DateTime.Today;
return (
from promo in context.Promoes
where
promo.DateEnable <= today &&
(promo.DateDisable == null || promo.DateDisable >= today)
orderby promo.SortOrder
select promo
).ToList();
基本的に、日付が今日より大きいかどうかを確認する必要がありnull
ます。
また、ステートメントの外部で値をキャプチャする必要があります。LINQ プロバイダーがDateTime.Today
データベース側で正しく変換されることは保証されていません。
ただし、遅延実行のため、クエリの実行を長時間待機すると、today
期待する値が得られない可能性があることに注意してください (クエリの宣言と実行の間の時間が真夜中を過ぎた場合)。
もちろん、データベース サーバーがアプリケーション サーバーとは異なるタイムゾーンにある場合はDateTime.Today
、LINQ プロバイダーによって正しく処理されていることを確認し (サーバー上で実行されるようにする必要があります)、比較する場合はそれを使用する必要があります。 DB サーバー上の時間。プロバイダーが正しく変換を処理しない場合は、ストアド プロシージャに頼ってそれを呼び出す必要があります。DateTime.Today