Борьба с.ToList(), получающим EntitySet<...>, а не IList<..>

Я пытаюсь получить список Idэто из коллекции, которая находится на нескольких уровнях в иерархии объектов. Когда я пытаюсь сделать ToList()Я продолжаю получать EntityList<> вместо этого извлекается.. что означает, что это не позволяет мне получить экземпляр BarId собственность, потому что EntitySet это Enumerable, а не один экземпляр объекта.

Foo.Child1 (1 to 1)
Child1.Children2 (0 to many of type Bar)
Bar.BarId int;

IList<Foo> fooList = (from blah blah blah).ToList();

var children2List = (from x in fooList
select x.Child1.Children2).ToList();

Это продолжает возвращаться children2List как EntitySet<Bar>не IList<Bar>, Поэтому я изо всех сил пытаюсь получить список BarIdиз children2List,

пожалуйста помоги!

3 ответа

Решение

Вы можете использовать:

var children2List = fooList.SelectMany( x => x.Child1.Children2 ).ToList();

Это позволит вам сделать что-то вроде:

children2List.ForEach( b => b.BarId.Print() );

В своем запросе вы превращаете весь результат в список, а не в отдельные наборы Children2. Пытаться

var children2List = (from x in fooList
select x.Child1.Children2.ToList()).ToList();

Это превратит каждого Children2 в список.

EntitySet<T> инвентарь IList<T> так вы уже возвращаетесь IList<Bar>,

Другие вопросы по тегам