2つの配列をforeachを使って2重ループする次のコードを、
LINQを使ったコードに書き換えます。
static void Func1()
{
string[] array1 = { "A", "B", "C" };
int[] array2 = { 1, 2, 3 };
var q = new List<string>();
foreach (var n in array1)
foreach (var m in array2)
q.Add($"{n}{m}");
foreach (var i in q)
Console.WriteLine(i);
}
実行結果
A1
A2
A3
B1
B2
B3
C1
C2
C3
クエリ構文
クエリ構文は、fromは2回以上使用できます。
fromを2回使って、2重ループと同じ処理ができます。
static void Func2()
{
string[] array1 = { "A", "B", "C" };
int[] array2 = { 1, 2, 3 };
var q =
from n in array1
from m in array2
select $"{n}{m}";
foreach (var i in q)
Console.WriteLine(i);
}
メソッド構文
メソッド構文を使用する場合は、SelectManyメソッドを使用します。
static void Func3()
{
string[] array1 = { "A", "B", "C" };
int[] array2 = { 1, 2, 3 };
var q = array1.SelectMany(
_ => array2,
(n, m) => $"{n}{m}");
foreach (var i in q)
Console.WriteLine(i);
}