[C# LINQ] 配列、リストのすべての要素が条件を満たすか判定する(All)

LINQのAllメソッドを使うと、配列・コレクションのすべての要素が条件を満たすかどうか判定することが出来ます。

LINQってなに?という方は、[C# 入門] LINQについてのざっくり解説を見てください。

スポンサーリンク

Allメソッドの使い方

Allメソッドの引数には条件を判定するメソッドを指定します。この指定したメソッドがすべての要素に対して実行されます。
Allメソッドの戻り値は、すべての要素が条件を満たす場合にTrue、条件を満たさない場合にFalseが返されます。

条件を判定するメソッドの引数にはデータソース(配列、リストなど)の各要素が渡されます。
条件を判定するメソッドの戻り値はBoolean型(TrueまたはFlase)です。
渡された要素が条件を満たす場合にTrue、満たさない場合にFalseを返すようにします。

ラムダ式を使って匿名関数を渡すと簡単にAllメソッドに引数を指定することができます。ラムダ式?という方は、[C# 入門] 匿名関数(ラムダ式)の使い道を見てください。

LINQを使うには、名前空間System.Linqが必要です。

using System.Linq;

サンプルです。

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    public static void Main()
    {
        // データソース(int型の配列)
        var ary = new int[] { 1, 2, 3, 4, 5 };
        // Allメソッドを使ってすべての要素が条件を満たすか判定する
        var all_result = ary.All(i => i == 3);
        Console.WriteLine($"aryの全ての要素が3かどうか?={all_result}");

        all_result = ary.All(i => i < 10);
        Console.WriteLine($"aryの全ての要素が10以下かどうか?={all_result}");


        // データソース(SampleDataクラスのリスト)
        var list = new List<SampleData> {
            new SampleData { Data1 = 10, Data2 = 11 },
            new SampleData { Data1 = 10, Data2 = 12 },
            new SampleData { Data1 = 10, Data2 = 13 },
        };
        // Allメソッドを使ってすべての要素が条件を満たすか判定する
        all_result = list.All(d => d.Data1 == 10);
        Console.WriteLine($"listの全ての要素(Data1)が10かどうか?={all_result}");
    }
}

class SampleData
{
    public int Data1 { get; set; }
    public int Data2 { get; set; }
}

出力結果はこんな感じです。

aryの全ての要素が3かどうか?=False
aryの全ての要素が10以下かどうか?=True
listの全ての要素(Data1)が10かどうか?=True

C# プログラミング講座に戻る

コメント

タイトルとURLをコピーしました