コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【C#】二重ループを LINQ で記述する

ソースコード

通常

var list1 = Enumerable.Range( 1, 3 );
var list2 = Enumerable.Range( 1, 3 );

foreach ( var i1 in list1 )
{
    foreach ( var i2 in list2 )
    {
        Console.WriteLine( i1 + ", " + i2 );
    }
}

LINQ

var list1  = Enumerable.Range( 1, 3 );
var list2  = Enumerable.Range( 1, 3 );
var result = list1.SelectMany( i1 => list2.Select( i2 => ( i1, i2 ) ) );

foreach ( var ( i1, i2 ) in result )
{
    Console.WriteLine( i1 + ", " + i2 );
}