我想找一个集合中是否有任何错误的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)
是的,它会工作,因为Boolean是IComparable<Boolean>但它的尴尬,因此这是很难理解的意图你的代码。
此外,您的代码必须遍历整个序列才能确定是否存在false,如果序列为空,它将抛出。
使用All来代替:
MyList.All(item => item.MyBool)
Run Code Online (Sandbox Code Playgroud)
false如果false序列中有任何值,这将返回。如果序列为空,All则返回true。