2013-11-01 2 views
0

Я знаю, как объединить 2 списка вместе в C#, но предположим, что у меня есть 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, почему бы не объявить его как Список vastList? –

+0

@HenleyChiu Вы можете - 'var' просто позволяет компилятору решить, какой тип будет. Вам нужно будет добавить 'ToList()' до конца, чтобы сделать его фактическим. –

+0

спасибо. Теперь вы заработали +! :) –

Смежные вопросы