如何确定数组中的一个元素是否具有属性的false值,以及所有元素是否具有使用Linq的true值

时间:2017-07-10 05:15:07

标签: c# linq

我有一个包含多个对象的数组,它们具有isClosed bool属性。我想知道如何确定:

  1. 如果所有值均为真

  2. 如果只有一个这些值为false

  3. 使用Linq。

5 个答案:

答案 0 :(得分:5)

你可以这样解释你的问题:

我想知道如何确定:

  1. 如果false = 0
  2. 的计数
  3. 如果false = 1
  4. 的计数

    您只需使用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