2013-11-01 35 views
0

我知道如何在C#中将2个列表组合在一起,但假设我有一个IEnumerable对象,每个对象都有一个列表。我如何创建1个巨大的列表,连接所有列表。如何通过Linq结合列表?

我基本上要做到以下几点Linq中(更优雅)

//FakeObject has a list property 
IEnumerable<FakeObject> objects = ...; 
List<int> hugeList = new List<int>(); 

foreach(FakeObject object in objects) 
{ 
    List<int> list = object.list; 
    foreach(int i in list) 
    { 
     hugeList.Add(i) 
    } 
} 

回答

8

使用SelectMany扁平化集合的集合到一个列表:

var hugeList = objects.SelectMany(o => o.list); 

或为实际列表:

List<int> hugeList = objects.SelectMany(o => o.list).ToList(); 
+0

为什么我需要var,为什么不声明为列表 hugeList? –

+0

@HenleyChiu你可以 - 'var'只是让编译器决定这个类型是什么。你需要添加'ToList()'到最后才能成为一个真正的列表。 –

+0

谢谢。现在你赢得了+! :) –