在泛型中替代Contains方法
本文关键字:Contains 方法 泛型 | 更新日期: 2023-09-27 18:12:30
我使用c# Asp.net 4和Linq。
有BOOL类型的泛型。我需要检查泛型中是否至少有一个元素为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
方法的其他方法。
多谢!
可以使用Any():
if(userIsValid.Any(b => b)) { ... }
一旦达到lambda指定的true条件,它将返回true。在这种情况下,由于列表中的值是布尔值,它只需要检查值。更详细的写法是.Any(b => b == true)
,但这是不必要的。
你这样做:
if (userIsValid.Aggregate((x,y) => x || y)) { ... }
我不会这样做,因为它不是很清晰的代码,而且它实际上比其他选项慢,因为它不会在找到true时立即返回。
但是如果你只是在寻找深奥的解决方案…
可以:
存在()
userIsValid.Exists(true);
或
任何()userIsValid.Any(x => x);