Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在LINQ中展平列表_C#_Linq_List - Fatal编程技术网

C# 在LINQ中展平列表

C# 在LINQ中展平列表,c#,linq,list,C#,Linq,List,我有一个LINQ查询,它返回IEnumerable,但我只想返回List,所以我想将IEnumerable中的所有记录合并到一个数组中 例如: IEnumerable<List<int>> iList = from number in (from no in Method() select no) select number; 我想把我所有的结果IEnumerable放到一个列表中 因此,从源阵列: [1,2,3,4]和[5,6,7] 我只需要一个数组 [1,2

我有一个LINQ查询,它返回IEnumerable,但我只想返回List,所以我想将IEnumerable中的所有记录合并到一个数组中

例如:

IEnumerable<List<int>> iList = from number in
    (from no in Method() select no) select number;
我想把我所有的结果IEnumerable放到一个列表中

因此,从源阵列: [1,2,3,4]和[5,6,7]

我只需要一个数组 [1,2,3,4,5,6,7]

谢谢

试试看

像这样

var iList = Method().SelectMany(n => n);
如果你有一个清单k,你可以做什么

List<int> flatList= k.SelectMany( v => v).ToList();
使用查询语法:

var values =
from inner in outer
from value in inner
select value;

谢谢,我总是忘记这一个-我知道它在那里,但我只是花了太多的时间在谷歌上,每次我需要使用它。将此答案加入书签:-有一段时间我担心我是唯一一个需要这个的人。谢谢你,迈克!SelectMany i=>i是否有其他语法?我见过这种语法被大量使用,但它似乎是对select特性的退化使用,因此我希望语言设计者能专门为列表提供一种快捷语法lists@recursive其他人错过了什么。托雷如果你只需要迭代一次,或者如果项目可能会改变,那么这是一种环境。ToArray绝对不是你想要的。但是对于要多次枚举的静态项,.ToList或.ToArray将以稍高的内存使用率为代价来提高性能,这通常是一个很好的选择。可能这种情况下需要数组,因为这是问题中指定的。@recursive,如果我们挑剔,OP说他需要返回列表,所以。ToList才是正确的选择。@MEMark OP还只对一个数组声明了我要查找的确切语法,而如此多的答案列出了更详细的内容。这比SelectMany好得多。更清楚的是IMO到底发生了什么,谢谢你指出这一点!就我个人而言,我总是发现查询语法版本远不如方法调用版本直观。当Resharper提供将循环转换为LINQ表达式(如果它提供查询语法)时,我总是选择撤消。
iList.SelectMany(x => x).ToArray()
var values =
from inner in outer
from value in inner
select value;