IEnumerable<List<int>>
,但是我只想返回List<int>
,所以我想将我在IEnumerable<List<int>>
中的所有记录合并到一个数组中。示例:
IEnumerable<List<int>> iList = from number in
(from no in Method() select no) select number;
我想将我所有的结果
IEnumerable<List<int>>
只带到一个List<int>
因此,来自源数组:
[1,2,3,4]和[5 ,6,7]
我只需要一个数组
[1,2,3,4,5,6,7]
感谢
#1 楼
尝试SelectMany()
var result = iList.SelectMany( i => i );
#2 楼
使用查询语法:var values =
from inner in outer
from value in inner
select value;
评论
感谢我一直在寻找的确切语法,所以有这么多的答案列出了其他更详细的内容。
– SilverSideDown
2014年2月4日在21:19
这比SelectMany好得多。更清楚地了解IMO的情况,感谢您指出这一点!
–布莱恩·雷纳(Bryan Rayner)
16年9月14日在15:49
我个人总是发现查询语法版本比方法调用版本更不直观。当Resharper提供将循环转换为LINQ表达式时,如果它为我提供了查询语法,我将始终撤消。
–bikeman868
16-09-23在23:50
#3 楼
iList.SelectMany(x => x).ToArray()
评论
@recursive其他所有人都错过了什么? .ToArray()? -这是一种情况-如果您只需要迭代一次-或者项目可能会更改,那么.ToArray()绝对不是您想要的。但是对于要多次枚举的静态项,.ToList()或.ToArray()会提高性能(以稍微更高的内存使用为代价,通常这是相当不错的)。
– BrainSlugs83
2013年12月19日在18:55
大概在这种情况下,情况需要数组,因为在问题中已指定了数组。
–递归
2013年12月19日在21:49
@recursive,如果我们挑剔,OP表示他需要返回List
– MEMark
14年2月26日在16:48
@MEMark OP还声明“仅一个数组”
– StefanJanssen
19年2月26日在11:16
#4 楼
这样吗?var iList = Method().SelectMany(n => n);
#5 楼
如果您有List<List<int>> k
,可以执行List<int> flatList= k.SelectMany( v => v).ToList();
评论
谢谢,我总是忘记了它-我知道它在那里,但是每次我需要使用它时,我都会花太多时间在Google上搜索。收藏这个答案。 :-)
– BrainSlugs83
2013年12月19日在18:51
有一段时间,我担心自己是唯一需要此服务的人。谢谢迈克!
– Arnab Chakraborty
15年4月14日在8:52
SelectMany(i => i)是否有一些替代语法?我已经看到这种语法使用了很多,但是似乎对select功能的使用已经退化,因此我希望语言设计人员能够专门针对列表列表使用一种快捷语法。
–安迪
17年2月9日在12:15