我有一个包含多个对象的数组,它们具有isClosed
bool属性。我想知道如何确定:
如果所有值均为真
如果只有一个这些值为false
使用Linq。
答案 0 :(得分:5)
你可以这样解释你的问题:
我想知道如何确定:
false
= 0 false
= 1 您只需使用LINQ Count
:
switch (collection.Count(x => !x.isClosed))
{
case 0:
// case 1, all values are true
break;
case 1:
// case 2, exactly one of these values is false
break;
default:
// other cases, more than 1 false value
break;
}
使用这种方法,您只会遍历collection
一次。
答案 1 :(得分:2)
List<Item> items = new List<Item>()
{
new Item() { IsClosed = true },
new Item() { IsClosed = true },
new Item() { IsClosed = true }
};
var allValuesAreTrue = items.All(it => it.IsClosed);
var onlyOneValueIsTrue = items.Count(it => it.IsClosed) == 1;
答案 2 :(得分:0)
使用Linq .all喜欢
它告诉您集合中的所有元素是否与特定条件匹配。它是.NET Framework中System.Linq命名空间的一部分。它返回true或false。
if (array.All(element => element.isClosed))
{
return true;
}
答案 3 :(得分:0)
您可以使用以下代码达到所需要求:
var list = new List<MyClass>();
var myClass1 = new MyClass {IsClosed = true};
var myClass2 = new MyClass { IsClosed = true };
var myClass3 = new MyClass { IsClosed = true };
list.Add(myClass1);
list.Add(myClass2);
list.Add(myClass3);
var response=list.All(x => x.IsClosed);
如果列表中的所有元素都具有相同的值,则返回true。
答案 4 :(得分:0)
var count = arr.Count(a => a.isClosed);
if(count == arr.Length)
//all
else if(count == 1)
//only one
else
//not all, but more than one