苦苦挣扎.ToList()返回一个EntitySet< ...&gt ;,而不是TOList< ..>

时间:2009-03-16 00:42:41

标签: linq entityset

我正在尝试从对象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的列表。

请帮忙!

3 个答案:

答案 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>