簡體   English   中英

如何使用Linq找出數組中的一個元素是否具有false值的屬性以及所有元素是否具有true值

[英]How to find out if one element in array has false value for property and if all elements have true value using Linq

我有幾個對象的數組,它們有一個isClosed bool屬性。 我想知道如何確定:

  1. 如果所有值都為真

  2. 如果這些值中只有一個為假

使用Linq。

您可以這樣解釋您的問題:

我想知道如何確定:

  1. 如果false計數= 0
  2. 如果計數為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一次。

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;

使用Linq .all喜歡

它告訴您集合中的所有元素是否都符合特定條件。 它是.NET Framework中System.Linq命名空間的一部分。 它返回true或false。

if (array.All(element => element.isClosed))
            {
                return true;
            }

您可以使用以下代碼滿足兩個所需的要求:

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。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM