publishStart
などのフィールドで SELECT を頻繁に制限する必要がありますpublishEnd
。active
これらのフィールドは、いくつかの異なるテーブルにあります。したがって、行のみを選択する必要があります。
a: active == true;
b: publishStart < now;
c: publishEnd > now;
たとえば、次のようになります。
db.myTable.SingleOrDefault(a => (a.ID == _theID
//now the active and start-end part:
&& ((a.publishEnd > DateTime.Now) || (a.publishEnd == null))
&& ((a.publishStart <= DateTime.Now) || (a.publishStart == null))
&& a.active == true));
これは少し長いので、次のような(拡張?)メソッドを作成できるかどうか疑問に思います。
db.myTable.SingleOrDefault(a => (a.ID == _theID).isActive()
ここisActive()
で、上記のスニペットの 3 行を提供します。
どうすればこれを行うことができますか? コードをクリーンアップするより良い方法はありますか?