在C#中展平锯齿状数组

Ced*_*uck 7 c# linq

有没有一种优雅的方法来在C#中展平2D数组(使用Linq与否)?

比如假设

var my2dArray = new int[][] {
   new int[] {1,2,3},
   new int[] {4,5,6}
};
Run Code Online (Sandbox Code Playgroud)

我想打电话

my2dArray.flatten()
Run Code Online (Sandbox Code Playgroud)

会产生的

{1,2,3,4,5,6}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

juh*_*arr 25

您可以使用 SelectMany

var flat = my2dArray.SelectMany(a => a).ToArray();
Run Code Online (Sandbox Code Playgroud)

这将适用于您的示例中的锯齿状数组,但不适用于2D数组

var my2dArray = new [,] { { 1, 2, 3 }, { 1, 2, 3 } };
Run Code Online (Sandbox Code Playgroud)

但在这种情况下,您可以像这样迭代值

foreach(var item in my2dArray)
    Console.WriteLine(item);
Run Code Online (Sandbox Code Playgroud)