列出<double [] []>到List <double []> </double []> </double [] []>

时间:2013-08-30 16:31:46

标签: c# arrays flatten

我是一个python人,最近开始了一个C#项目。我的代码的一部分需要myList = List<double[][]>,需要将其转换为myNewList = List<double[]>以传递给另一个函数。

所以假设myList看起来像这样:

{{{0.0, 1.0}, {2.0, 3.0}}, {{4.0, 5.0}, {6.0, 7.0}}}

我希望myNewList看起来像这样:

{{0.0, 1.0}, {2.0, 3.0}, {4.0, 5.0}, {6.0, 7.0}}

在python中,我会这样做:

myNewList = list(itertools.chain.from_iterable(myList))

现在,我可以通过foreach循环轻松实现此功能并将Add保留到myNewList,但有没有人知道这样做的内置方式?

3 个答案:

答案 0 :(得分:5)

更好地使用LINQ

var myNewList = myList.SelectMany(x=>x).ToList();

答案 1 :(得分:4)

试试这个:

myNewList.SelectMany(x => x.Select(y => y).ToArray()).ToList();

这会给你一个List<double[]>

答案 2 :(得分:2)

您可以使用方法SelectMany来“展平”列表。基本上,如果您有一个列表列表,它会将所有列表连接成一个列表。在这种情况下,你有一个List<double[][]>所以它嵌套了三次。

  List<double[]> flattenedList = myList.SelectMany(x => x.Select(y => y).ToArray()).ToList();

会为你做的。第一个Select并没有真正做任何事情,我喜欢把它想象成一个for循环,把它读作“对于每个x do x.SelectMany”它需要将一层下到{{1因为那些是你正在变平的东西。