2011-10-27 13 views
2

私はC#Asp.net 4とLinqを使用しています。Genericの代替メソッドを含む

私はジェネリック型BOOLを持っています。 Genericsの要素が少なくともTRUEであるかどうかを確認する必要があります。 現時点ではContainsメソッドを使用しています(すべて正常に動作しています)。

List<bool> userIsValid = new List<bool>(); 
userIsValid.Add(false); 
userIsValid.Add(true); 
userIsValid.Add(false); 
if (userIsValid.Contains(true)) 
// do smt here 

私はContainsメソッドを使用せずに別のアプローチを存在するかどうかを知りたいと思います。

多くのありがとうございます!

+2

「Contains」アプローチの問題点は何ですか?このサンプルのために動作します – JaredPar

+0

あなたが望むものを正確に実行すると、なぜあなたは 'Contains'を使用しませんか? – Polynomial

+0

選択肢がありますが、なぜですか?これ以上は簡潔ではありません。 –

答えて

4

あなたはそれがラムダで指定された真の条件に当たるとして、これはすぐにtrueを返しますAny():

if(userIsValid.Any(b => b)) { ... } 

を使用することができます。この場合、リストの値がブール値であるため、単に値をチェックするだけです。それを書くより冗長な方法は.Any(b => b == true)ですが、これは不要です。

+0

本当に面白いアプローチ! – GibboK

1

これらは動作します:

Exists()

userIsValid.Exists(true); 

または

Any()

userIsValid.Any(x => x); 
1

あなたはこれを行うことができます:

if (userIsValid.Aggregate((x,y) => x || y)) { ... } 

非常に明確なコードではないため、実際には真であるとすぐには戻ってこないため、実際には他のオプションよりも遅いため、これは行いません。

しかし、難解な解決策を探しているだけなら...

+0

コメントありがとうございました – GibboK

関連する問題