C# 是否有LINQ方法来加入/合并未知数量的列表?

C# 是否有LINQ方法来加入/合并未知数量的列表?,c#,linq,list,.net-4.0,C#,Linq,List,.net 4.0,我有一个包含子对象列表的对象,每个子对象又包含一个子对象列表,以此类推。仅使用第一代儿童,我希望以尽可能干净和便宜的方式组合所有这些列表。我知道我可以做像这样的事情 public List<T> UnifiedListOfTChildren<T>() { List<T> newlist = new List<T>(); foreach (childThing in myChildren)

我有一个包含子对象列表的对象,每个子对象又包含一个子对象列表,以此类推。仅使用第一代儿童,我希望以尽可能干净和便宜的方式组合所有这些列表。我知道我可以做像这样的事情

    public List<T> UnifiedListOfTChildren<T>() 
    {
        List<T> newlist = new List<T>();
        foreach (childThing in myChildren)
        {
            newlist = newlist.Concat<T>(childThing.TChildren);
        }
        return newlist;
    }
public List UnifiedListOfTChildren()
{
List newlist=新列表();
foreach(我的孩子中的孩子)
{
newlist=newlist.Concat(childThing.TChildren);
}
返回newlist;
}
但是有没有一种更优雅、更便宜的LINQ方法是我所缺少的呢


编辑如果您在这个问题上的回答与我相同,并且是SelectMany的新手,我强烈建议您如何使用它。目前在谷歌搜索结果中排名靠前,但值得直接跳到。

在您添加.TChildren之前一直感到困惑。谢谢你,我一点都不知道。难以置信的有用。有时我希望这样可以考虑后续/相关问题。。。我可以将SelectMany与OfType类型的实现结合起来,其中lambda可以使用派生类型的属性吗?@downwitch-
SelectMany
返回一个
IEnumerable
,这样您就可以对返回的序列使用OfType了。谢谢,我得到了。。。我想我是在问另外一个问题。我会设法想出一个更好的方法来表述它。
var newList = myChildren.SelectMany(c => c.TChildren);