LINQ Concat子列表在列表中

M K*_* II 4 c# linq

在我的代码中,我有一个ObjectA列表,每个ObjectA都有一个ObjectB列表.我想获得ObjectAs列表中所有ObjectB的一个列表.

如果我有这个对象:

public class ObjectA
{
    public string Name {get; set;}
    public List<ObjectB> Children {get; set;}
}

public class ObjectB
{
    public string ChildName {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

这段代码:

void Main()
{
    var myList = 
        new List<ObjectA>{
            new ObjectA{
                Name = "ItemA 1", 
                Children = new List<ObjectB>{
                        new ObjectB{ChildName = "ItemB 1"},
                        new ObjectB{ChildName = "ItemB 2"}
                    }
            },
            new ObjectA{
                Name = "ItemA 2", 
                Children = new List<ObjectB>{
                        new ObjectB{ChildName = "ItemB 3"},
                        new ObjectB{ChildName = "ItemB 4"}
                    }
            }
        };
    // What code would I put here to concat all the ObjectBs?
}
Run Code Online (Sandbox Code Playgroud)

我想得到List<ObjectB>4 ObjectB件物品:

ItemB 1
ItemB 2
ItemB 3
ItemB 4

juu*_*nas 9

你可以使用SelectMany:

var result = mylist.SelectMany(a => a.Children).ToList();
Run Code Online (Sandbox Code Playgroud)


Niy*_*wan 7

var allObjectB = myList.SelectMany(x=>x.Children).ToList();
Run Code Online (Sandbox Code Playgroud)