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