2016-07-26 6 views
0

Итак, у меня есть объект IEnumerable, который содержит очередь (список), каждый элемент содержит 3 свойства. Одно из этих свойств («Состояния») содержит другой массив ... и этот массив содержит свойство «Сообщения». Довольно запутанно, поэтому я сделал фотографию локального в отладке. I had to edit sensible data out, sorry guys Пришлось редактировать разумные данные.Вложенные IEnumerable/массивы, как получить доступ к глубоко вложенному свойству

У меня есть только этот IEnumerable объект для работы. Как мне добраться до свойства «сообщение»?

Я уже пробовал некоторые лямбда-выражения ... как

var _message = _criticalData.Select(item1 => item1.States.Select(item2 =>item2.Messages).ToArray()).ToArray() 

Тогда я могу создать новый массив/список строк и Foreach каждый _message в него.

Atleast Я думаю, что это работает (не может проверить его дома). Но это было бы действительно очень медленно. Есть ли другой способ сделать это?

+0

Это было бы гораздо более полезным, если бы вы показали свои классы вместо изображения. – user3185569

+0

Я знаю, к сожалению, я не могу получить доступ к коду удаленно. И я не хотел спамить эти вопросы с 4-мя фотографиями классов. – coding4life

+0

Как оба элемента 'item1' и' item2' (который является самим состоянием) имеют свойство States? – user3185569

ответ

2

Вы должны выравниваться несколько списков, так что используйте SelectMany как:

string[] output = _criticalData.SelectMany(outer => 
          outer.States.SelectMany(inner => inner.Messages)) 
          .ToArray(); 
+0

Святый, я даже не знал, что был избранный метод .... спасибо. :) – coding4life

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