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

时间:2015-04-22 15:48:29

标签: c# linq

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

this.MyList.Min(e => e.MyBool)

我希望如果集合中有错误,这将返回false。

2 个答案:

答案 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)

是的,它会起作用,因为BooleanIComparable<Boolean>,但它笨拙,因此更难理解代码的意图。< / p>

此外,您的代码必须通过整个序列才能找出是否有false,如果序列为空则会抛出。

改为使用All

MyList.All(item => item.MyBool)

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