我正在尝试从对象heirachy中几层深的集合中检索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
的列表。
请帮忙!
答案 0 :(得分:3)
你可以使用:
var children2List = fooList.SelectMany( x => x.Child1.Children2 ).ToList();
这将允许您执行以下操作:
children2List.ForEach( b => b.BarId.Print() );
答案 1 :(得分:0)
在您的查询中,您将整个结果转换为列表,而不是单个Children2集。 尝试
var children2List = (from x in fooList
select x.Child1.Children2.ToList()).ToList();
这会将每个Children2变成一个列表。
答案 2 :(得分:0)
EntitySet<T>
实施IList<T>
,因此您已经 返回IList<Bar>
。