我是一个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
,但有没有人知道这样做的内置方式?
答案 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因为那些是你正在变平的东西。