泛型中 Contains 方法的替代方案

发布于 2024-12-12 09:03:48 字数 386 浏览 0 评论 0原文

我使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

三寸金莲 2024-12-19 09:03:48

您可以使用 Any():

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

这将一旦满足 lambda 指定的 true 条件,就返回 true。在这种情况下,由于列表中的值是布尔值,因此只需检查该值即可。更详细的编写方式是 .Any(b => b == true) 但这是不必要的。

You can use Any():

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

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.

牵你手 2024-12-19 09:03:48

可以这样做:

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

我不会这样做,因为它不是非常清晰的代码,而且它实际上比其他选项慢,因为它一旦找到 true 就不会返回。

但如果您只是在寻找深奥的解决方案......

You could do this:

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

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...

凝望流年 2024-12-19 09:03:48

这些可以工作:

Exists()

  userIsValid.Exists(true);

任何()

userIsValid.Any(x => x);

These would work:

Exists()

  userIsValid.Exists(true);

or

Any()

userIsValid.Any(x => x);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文