我可以在bool类型上使用.Min()Linq扩展方法吗?

Nei*_*l P 2 c# linq

我想找一个集合中是否有任何错误的bool.我可以使用以下代码来查找它吗?

this.MyList.Min(e => e.MyBool)
Run Code Online (Sandbox Code Playgroud)

如果集合中存在错误,我希望这将返回false.

Tim*_*ter 11

您可以使用(出于可读性的原因重命名该集合):

bool anyFalse = myBools.Any(b => !b);
Run Code Online (Sandbox Code Playgroud)

要么

bool anyFalse = !myBools.All(b => b);
Run Code Online (Sandbox Code Playgroud)

两者都是有效率的,因为他们在第一次突破false.

如果集合中有复杂的对象(因为它是seerms),请使用:

bool anyFalse = MyList.Any(x => !x.MyBool);
Run Code Online (Sandbox Code Playgroud)

要么

bool anyFalse = !MyList.All(x => x.MyBool);
Run Code Online (Sandbox Code Playgroud)


Luc*_*ski 5

是的,它会工作,因为BooleanIComparable<Boolean>但它的尴尬,因此这是很难理解的意图你的代码

此外,您的代码必须遍历整个序列才能确定是否存在false,如果序列为空,它将抛出。

使用All来代替:

MyList.All(item => item.MyBool)
Run Code Online (Sandbox Code Playgroud)

false如果false序列中有任何值,这将返回。如果序列为空,All则返回true