2015-02-10 2 views

ответ

12

SelectMany обычно способ придавить иерархии, так:

var values = myList.SelectMany(foo => foo.Bar) 
        .Select(bar => bar.Value); 

SelectMany даст вам IEnumerable<Bar>, а затем Select проектов, которые последовательность Bar объектов к Value собственности каждому, возвращая IEnumerable<int>.

В выражении запроса, это было бы:

var values = from foo in myList 
      from bar in foo.Bar 
      select bar.Value; 
6

Я предлагаю вам изменить List<Bar> имя свойства для Bars.

И, во-первых, используйте SelectMany(). Он проецирует каждый элемент последовательности на IEnumerable<T> и выравнивает полученные последовательности в одну последовательность. Затем используйте Select() для проецирования каждого элемента новой последовательности по вашему желанию.

var result = myList.SelectMany(x => x.Bars).Select(x => x.Value).ToList(); 
2

Использование SelectMany вместо Select

var result = LIST1.SelectMany(x => x.LIST2.Select(y => y.Value)).Tolist(); 
Смежные вопросы