LINQ を使った文字チェック例

文字列が、英大文字のみで構成されているかどうかを判断する処理なんですけど、今コードを読んでいたら、すごく長い LINQ が書かれていたコードを発見したので、書き直してみました。

static void Main(string[] args) {
	Func func = p => p.All(x => "ABCDEFGHIJKLMNOPQRSTUVWXYZ".Contains(x));
	Console.WriteLine(func("123"));
	Console.WriteLine(func("AAA"));
	Console.WriteLine(func("BZa"));
	Console.WriteLine(func("AHE"));
	Console.ReadLine();
}

実行すると、上から「False, True, False, True」になります。
string 型は、char 型のシーケンスで構成されています。
All メソッドは、シーケンスの値をベースとした判断式がすべて true の時だけ、true を返します。
Contents メソッドは、自身のシーケンスの中に指定された値が含まれているときに true を返します。

上記の例では、これらの処理を匿名メソッドとして func に格納して数回利用しています。