私はこれが機能することを知っています:
var result = someCollection.Select(x=>x);
私はWhere()
メソッドで同様の結果を求めています:
var result = someCollection.Where(x=> someBool ? x : x.Key == 1);
someBool
true の場合は「すべて」を選択したいと思います。上記のコードは機能しません。ラムダを使用してこれを解決する方法はありますか?
||
演算子を使用someBool
します。true の場合、すべてのレコードが選択されます。
var result = someCollection.Where(x=> someBool || x.Key == 1);
OR
条件演算子を探しています
var result = someCollection.Where(x => someBool || x.Key == 1);
別の方法として、
var result = someCollection;
if (someBool)
{
result = someCollection.Where(x => x.Key == 1);
}
追加の入力により、コードの可読性が向上し、パフォーマンスが向上する可能性があると思います。
||
insideの述語を使用する代わりに、必要な場合Where
にのみ を適用すると便利なWhere
場合があります。
var result = source;
if(!someBool)
result = result.Where(x => x.Key == 1);
これは、フィルタリングする必要がないため、通常は少し高速です。しかしsource
、それは時には望ましくない外部にさらされます。
これはテスト済みのコードです
var result = someCollection.Where(x => someBool || x.Key == 1);