C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#でListに指定した条件に一致する要素が含まれているか確認する方法

C#でList<T>の中に、指定された条件(述語)に一致する要素が1つでも含まれているかどうかを確認するには、Existsメソッドを使用します。ExistsメソッドはPredicate<T>デリゲートを引数に受け取り、条件に一致する要素が存在すればtrue、1つも存在しなければfalseを返します。

コード例

以下の例では、「3で割り切れる」という条件を満たす要素がリスト内に存在するかどうかを判定しています。

using System;
using System.Collections.Generic;

public class Demo {
    private static bool demo(int i) {
        return ((i % 3) == 0);
    }

    public static void Main(String[] args) {
        List<int> list = new List<int>();
        list.Add(255);
        list.Add(315);
        list.Add(410);
        list.Add(500);
        list.Add(600);
        list.Add(710);
        list.Add(800);
        list.Add(1000);

        Console.WriteLine("List elements...");
        foreach (int i in list) {
            Console.WriteLine(i);
        }

        Console.WriteLine("Does some elements match the predicate = " + list.Exists(demo));
    }
}

出力

上記のコードを実行すると、次のような結果が出力されます。

List elements...
255
315
410
500
600
710
800
1000
Does some elements match the predicate = True

この例では、リストに315や600といった3の倍数が含まれているため、demoメソッドで定義した条件「i % 3 == 0」に一致する要素が存在し、ExistsメソッドはTrueを返しています。

別の例

続いて、条件を「7で割り切れる」に変更した場合の動作を見てみましょう。

using System;
using System.Collections.Generic;

public class Demo {
    private static bool demo(int i) {
        return ((i % 7) == 0);
    }

    public static void Main(String[] args) {
        List<int> list = new List<int>();
        list.Add(255);
        list.Add(310);
        list.Add(410);
        list.Add(500);
        list.Add(600);

        Console.WriteLine("List elements...");
        foreach (int i in list) {
            Console.WriteLine(i);
        }

        Console.WriteLine("Does some elements match the predicate = " + list.Exists(demo));
    }
}

出力

実行結果は以下の通りです。

List elements...
255
310
410
500
600
Does some elements match the predicate = False

今回はリスト内のどの要素も7の倍数ではないため、ExistsメソッドはFalseを返します。このように、Existsメソッドを使えば任意の条件でリスト内の要素の存在チェックを簡単に行えます。

補足:ラムダ式を使った書き方

条件を別メソッドとして定義しなくても、ラムダ式を使えばより簡潔に記述できます。

bool result = list.Exists(x => x % 3 == 0);

関連するメソッド

  • Exists:条件に一致する要素が1つでもあればtrueを返す
  • Find / FindAll:条件に一致する最初の要素、または一致するすべての要素を取得する
  • TrueForAll:すべての要素が条件を満たす場合にtrueを返す
  1. C#でListの要素範囲を取得する方法:GetRange()メソッドの使い方

    C#のListで特定の範囲の要素を取得するには、GetRange() メソッドを使用します。このメソッドは、指定したインデックス位置から指定した数の要素を取り出し、新しいリストとして返します。 GetRange() メソッドの基本構文 public List<T> GetRange(int index, int count); index:取得を開始する要素のインデックス(0から始まります) count:取得する要素の数 リストの作成と要素の追加 まず、リストを作成して要素を追加します。 List<int> arr1 = new List<int>();

  2. C#でリストが空かどうかを確認する方法【Anyメソッドの使い方】

    C#でリストが空かどうかを確認するには?C#でList<T>が空かどうかを確認するには、LINQのAnyメソッドを使用するのが一般的です。Anyメソッドは、シーケンスに要素が1つでも含まれていればtrueを返し、空の場合はfalseを返します。この結果を否定演算子!で反転させることで、リストが空かどうかを簡単に判定できます。リストの作成まず、確認対象となるリストを作成しましょう。var subjects = new List<string>(); subjects.Add("Maths"); subjects.Add("Java"