私はこれが機能することを知っています:
var result = someCollection.Select(x=>x);
私はWhere()メソッドで同様の結果を求めています:
var result = someCollection.Where(x=> someBool ? x : x.Key == 1);
someBooltrue の場合は「すべて」を選択したいと思います。上記のコードは機能しません。ラムダを使用してこれを解決する方法はありますか?
||演算子を使用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);