我想找一个集合中是否有任何错误的bool。我可以使用以下代码找到它吗?
this.MyList.Min(e => e.MyBool)
我希望如果集合中有错误,这将返回false。
答案 0 :(得分:11)
您可以使用(出于可读性的原因重命名该集合):
bool anyFalse = myBools.Any(b => !b);
或
bool anyFalse = !myBools.All(b => b);
两者都很有效率,因为他们在第一个false
上打破。
如果集合中有复杂的对象(因为它是seerms),请使用:
bool anyFalse = MyList.Any(x => !x.MyBool);
或
bool anyFalse = !MyList.All(x => x.MyBool);
答案 1 :(得分:4)
是的,它会起作用,因为Boolean
是IComparable<Boolean>
,但它笨拙,因此更难理解代码的意图。< / p>
此外,您的代码必须通过整个序列才能找出是否有false
,如果序列为空则会抛出。
改为使用All
:
MyList.All(item => item.MyBool)
如果序列中有任何false
值,则会返回false
。如果序列为空,All
将返回true
。