今日はC#の2次元配列とLINQの相性がものすごく悪いなあという話です。 途中が無駄に長いので、途中がどうでもよくて対処法だけ知りたいという方はどうしてもLINQのメソッドを使いたいの節まで飛んでください。 きっかけ 1次元配列だと var a = new int[] { 2, 7, 1, 8, 2, 8 }; var b = new int[] { 3, 1, 4, 1, 5, 9 }; var c = a.Zip(b, (n, m) => n + m).ToArray(); みたいにSystem.Linq.Enumerable.Zip()で各要素ごとに同じ操作をすることができます。 それと同じように2次元配列でも var a = new int[,] { { 2, 7 }, { 1, 8 }, { 2, 8 } }; var b = new int[,] { { 3, 1 }, { 4