は、私は頻繁に、私はいくつかの異なるテーブルでこれらのフィールドを持っているactive
LINQの拡張メソッド
、publishEnd
、publishStart
などの分野でのSELECTを制限する必要があります。だから、だから、
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));
これは少し長いですので、それを作成することが可能である場合、私は疑問に思う - 方法(拡張子は?)等:isActive()
上記のスニペットの3株を提供
db.myTable.SingleOrDefault(a => (a.ID == _theID).isActive()
。
どうすればいいですか? コードをクリーンアップするより良い方法はありますか?
これらはすべて別々のテーブルにあります。コンテキストによって公開される単一のテーブルではありませんか?フィルタでは1つのコンテキストのみを使用している間は、プロパティが別のテーブルにあることをプリアンブルに示しているので、私は尋ねます。彼らがすべて同じテーブルにいる場合は、簡単です。異なるテーブルにある場合は、正しい答えが大きく変わります。 – casperOne
その場合は、 'IsActive' ** before **' SingleOrDefault'を呼び出して、そのIDを持つ項目が1つしかない場合を除き、アクティブ項目を1つだけ取り除くことができます。 – Servy