.NETのLINQで直積(デカルト積)を生成する方法

この記事は公開から1年以上経過しています。

.NETのLINQでPythonのitertools.product()のようにリストや配列の組み合わせ(直積/デカルト積)を作る方法。


対応

LINQのSelectMany()を使用する。

サンプルソースコード(C#)

var data1 = new[] { "A", "B", "C" };
var data2 = new[] { 1, 2, 3 };

var product = data1.SelectMany(_ => data2, (x, y) => new { x, y });

foreach(var item in product)
    Console.WriteLine(item);


出力結果

{ x = A, y = 1 }
{ x = A, y = 2 }
{ x = A, y = 3 }
{ x = B, y = 1 }
{ x = B, y = 2 }
{ x = B, y = 3 }
{ x = C, y = 1 }
{ x = C, y = 2 }
{ x = C, y = 3 }


以上です。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする