我使用C#Asp.net 4和Linq。
我有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
方法的方法。
非常感谢!
答案 0 :(得分:4)
您可以使用Any():
if(userIsValid.Any(b => b)) { ... }
一旦达到lambda指定的真实条件,它就会返回true。在这种情况下,因为列表中的值是布尔值,它只需要检查值。写一个更冗长的方式是.Any(b => b == true)
,但这是不必要的。
答案 1 :(得分:1)
答案 2 :(得分:1)
你可以这样做:
if (userIsValid.Aggregate((x,y) => x || y)) { ... }
我不会这样做,因为它不是非常清晰的代码,它实际上比其他选项慢,因为一旦找到真的它就不会返回。
但如果你只是在寻找深奥的解决方案......