2

私はこれが機能することを知っています:

var result = someCollection.Select(x=>x);

私はWhere()メソッドで同様の結果を求めています:

var result = someCollection.Where(x=> someBool ? x : x.Key == 1);

someBooltrue の場合は「すべて」を選択したいと思います。上記のコードは機能しません。ラムダを使用してこれを解決する方法はありますか?

4

5 に答える 5

4

||演算子を使用someBoolします。true の場合、すべてのレコードが選択されます。

var result = someCollection.Where(x=> someBool || x.Key == 1);
于 2013-05-08T07:56:59.250 に答える
4

OR条件演算子を探しています

var result = someCollection.Where(x => someBool || x.Key == 1);
于 2013-05-08T07:57:39.613 に答える
2

別の方法として、

var result = someCollection;

if (someBool)
{
    result = someCollection.Where(x => x.Key == 1);
}

追加の入力により、コードの可読性が向上し、パフォーマンスが向上する可能性があると思います。

于 2013-05-08T08:16:35.657 に答える
1

||insideの述語を使用する代わりに、必要な場合Whereにのみ を適用すると便利なWhere場合があります。

var result = source;
if(!someBool)
  result = result.Where(x => x.Key == 1);

これは、フィルタリングする必要がないため、通常は少し高速です。しかしsource、それは時には望ましくない外部にさらされます。

于 2013-05-08T08:15:46.680 に答える
1

これはテスト済みのコードです

var result = someCollection.Where(x => someBool || x.Key == 1);
于 2013-05-08T08:12:17.757 に答える