LINQの書き方について。
配列を使って配列の要素を検索するパターンについて書きました。
using System;
using System.Linq;
namespace MyApp
{
class Program
{
static void Main(string[] args)
{
// 関東地方リスト
string[] kantouRegion = { "東京都", "神奈川県", "埼玉県", "千葉県", "群馬県", "栃木県", "茨城県" };
// ユーザの出身地リスト
string[] userBirthplaceArray1 = { "東京都", "群馬県", "千葉県" };
string[] userBirthplaceArray2 = { "東京都", "愛知県", "大阪府" };
string[] userBirthplaceArray3 = { "北海道", "福岡県", "沖縄県" };
// 少なくとも1人のユーザの出身地が関東地方
Console.WriteLine(userBirthplaceArray1.Any(w => kantouRegion.Any(t => t == w))); // True
Console.WriteLine(userBirthplaceArray2.Any(w => kantouRegion.Any(t => t == w))); // True
Console.WriteLine(userBirthplaceArray3.Any(w => kantouRegion.Any(t => t == w))); // False
Console.WriteLine("");
// すべてのユーザの出身地が関東地方
Console.WriteLine(userBirthplaceArray1.All(w => kantouRegion.Any(t => t == w))); // True
Console.WriteLine(userBirthplaceArray2.All(w => kantouRegion.Any(t => t == w))); // False
Console.WriteLine(userBirthplaceArray3.All(w => kantouRegion.Any(t => t == w))); // False
Console.WriteLine("");
// 人名漢字リスト
string[] kanjiArray = { "山", "一", "郎" };
// ユーザの名前リスト
string[] userNameArray1 = { "山田一郎", "山崎一郎", "山寺一郎" };
string[] userNameArray2 = { "山田一郎", "岩崎公太", "後藤四太" };
string[] userNameArray3 = { "森田一介", "佐藤三太", "後藤四太" };
// 少なくとも1人のユーザの名前に、人名漢字リストにあるすべての漢字が使われている
Console.WriteLine(userNameArray1.Any(w => kanjiArray.All(t => w.Contains(t)))); // True
Console.WriteLine(userNameArray2.Any(w => kanjiArray.All(t => w.Contains(t)))); // True
Console.WriteLine(userNameArray3.Any(w => kanjiArray.All(t => w.Contains(t)))); // False
Console.WriteLine("");
// すべてのユーザ名前に、人名漢字リストにあるすべての漢字が使われている
Console.WriteLine(userNameArray1.All(w => kanjiArray.All(t => w.Contains(t)))); // True
Console.WriteLine(userNameArray2.All(w => kanjiArray.All(t => w.Contains(t)))); // False
Console.WriteLine(userNameArray3.All(w => kanjiArray.All(t => w.Contains(t)))); // False
}
}
}