泛型中 Contains 方法的替代方案
我使用 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
方法的方法。
非常感谢!
I use C# Asp.net 4 and Linq.
I have a Generics of type BOOL.
I need to check if at least an element in the Generics is TRUE.
At the moment I'm using the Contains
method (all is working fine).
List<bool> userIsValid = new List<bool>();
userIsValid.Add(false);
userIsValid.Add(true);
userIsValid.Add(false);
if (userIsValid.Contains(true))
// do smt here
I would like to know if exist another approach without using the Contains
method.
Many Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以使用 Any():
这将一旦满足 lambda 指定的 true 条件,就返回 true。在这种情况下,由于列表中的值是布尔值,因此只需检查该值即可。更详细的编写方式是
.Any(b => b == true)
但这是不必要的。You can use Any():
This will return true as soon as it hits a true condition specified by the lambda. In this case as the values in your list are booleans it simply needs to check the value. A more verbose way of writing it would be
.Any(b => b == true)
but this is unnecessary.你可以这样做:
我不会这样做,因为它不是非常清晰的代码,而且它实际上比其他选项慢,因为它一旦找到 true 就不会返回。
但如果您只是在寻找深奥的解决方案......
You could do this:
I wouldn't do this because it is not very clear code, and it is actually slower than the other options because it won't return as soon as it finds a true.
But if you are just looking for esoteric solutions...
这些可以工作:
Exists()
或
任何()
These would work:
Exists()
or
Any()