query to Combine一个集合中所有父对象的所有子列表

时间:2013-11-19 06:54:30

标签: c# linq

我有类似

的类结构
public class Child
{
}

public class Parent
{
    public IEnumerable<Child> ListChild { get; set; }
}

并有一个测试类

public class Test
{
    public IEnumerable<Parent> GetMethod()
    {
        List<Parent> collection = new List<Parent>();
        //// added multiple items of collection with childs.

        var allChildren = from c in collection
                              select c.ListChild;
        var childss = allChildren.Select((c) => c.Select((d)=>d));
        return childss;// wrong..and cant compile
    }
}

如何编写查询以在不使用foreach的情况下获取一个IEnumerable集合中的所有子项。

由于

3 个答案:

答案 0 :(得分:4)

尝试

collection.SelectMany(a => a.ListChild)

但是它的IEnumerable是不是IEnumerable的父亲可以吗?

答案 1 :(得分:4)

您需要使用SelectMany,如下所示:

public IEnumerable<Child> GetMethod()
{
    List<Parent> collection = new List<Parent>();
    //// added multiple items of collection with childs.

    return collection.SelectMany(i => i.ListChild);
}

答案 2 :(得分:0)

GetMethod的返回类型更改为IEnumerable<Child>