C# 配列・Listに条件に合う要素があるかどうか調べる AnyやAll

こんにちは。レモンティーです。

今回は、配列やListのなかに
特定の条件を満たす要素があるかどうか判定します。

Unityで言うと、
パーティーメンバーを入れてある配列のなかに
レベルが99のメンバーがいるかどうか調べる…とか
全員が僧侶かどうか調べる…
みたいな使い方がありそうですね。

今回はLinqのAnyメソッドとAllメソッドを使いますのでこれを書いておきます

using System.Linq;


ではやってみます

次のようなクラスに対して…

class Human
{
    public string Name { get; set;}
    public int Level { get; set; }
    public string Job { get; set; }
}


こんな感じのパーティメンバーのListがあったとします
(まあUnityではMonoBehaviorがあるのでこんなことは無いかもしれませんが例です)

var Party = new List<Human>
{
    new Human{Name = "紅茶",Level = 95,Job = "僧侶"},
    new Human{Name = "緑茶",Level =88 ,Job = "戦士"},
    new Human{Name = "抹茶",Level = 99,Job = "飲料"},
    new Human{Name = "麦茶",Level = 91,Job = "パラディン"},
};


↓でパーティの中にレベル99のメンバーがいるかどうか判定できます。

 var a = Party.Any(x => x.Level == 99);

変数aにtrueが代入されます。


↓で全員が僧侶かどうか調べられます。

var b = Party.All(x => x.Job == "僧侶");

変数bにfalseが代入されます。


今回はこれでおしまいです。


sawalemounity.hatenablog.com

sawalemounity.hatenablog.com

sawalemounity.hatenablog.com