Борьба с.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>
,