如何将List <int []>转换为List <int>

时间:2019-01-27 16:59:05

标签: c#

private static void A(){
List<int[]> list = new List<int[]>();
int[] a = {0,1,2,3,4};
int[] b = {5,6,7,8,9};
list.Add(a);
list.Add(b);

List<int> list2 = new List<int>(); 
// list2 should contain {0,1,2,3,4,5,6,7,8,9}
}

我该如何将List<int[]> list转换为List<int>,使所有int[] arrays成为一个庞大的数字列表

3 个答案:

答案 0 :(得分:9)

似乎您正在寻找LINQ .SelectMany方法。 来自MSDN的报价:

  

将序列的每个元素投影到IEnumerable并展平   产生的序列变成一个序列

List<int> list2 = list.SelectMany(l => l).ToList();

如果您希望数字按特定顺序排序,则可以在执行查询之前使用.OrderBy(在我们调用.ToList时执行)

List<int> list2 = list.SelectMany(l => l).OrderBy(i => i).ToList();

答案 1 :(得分:2)

那怎么办?

var list2 = a.Concat(b).ToList();

答案 2 :(得分:0)

我将使用聚合函数。有更大的收藏集会更好。

List<int> list2 = list.Aggregate(new List<int>(), (ag, l) => { ag.AddRange(l); return ag; });