在泛型中替代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方法的其他方法。

多谢!

在泛型中替代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);