有没有一种优雅的方式在C#中展开一个二维数组(使用Linq或不使用Linq)?
例如,假设
var my2dArray = new int[][] {
new int[] {1,2,3},
new int[] {4,5,6}
};
我希望能够像这样调用某个东西:
my2dArray.flatten()
会产生
{1,2,3,4,5,6}
有任何想法吗?
SelectMany
。var flat = my2dArray.SelectMany(a => a).ToArray();
这将适用于像你的示例中的不规则数组,但不适用于像2D数组那样的数组。var my2dArray = new [,] { { 1, 2, 3 }, { 1, 2, 3 } };
但在这种情况下,您可以像这样迭代值
foreach(var item in my2dArray)
Console.WriteLine(item);
List<List<int>>
这样的列表,优点是可以轻松添加和删除元素,但这取决于你想要做什么。 - juharr
new int[][3]
中的3,否则你的代码将无法编译。 - juharr