有一个类型A的列表,每个列表都包含一个B类型的列表,获取所有类型B的列表的最佳方式是什么?每个列表都包含它们所属的类型A的列表?在LINQ中反转嵌套集合
拥有一个像列表如下:
var parents = new List<Parent> {
{
new Parent {
ID = 1,
Childs = new List<Child> {
{
new Child {
ID = 1
}
},
{
new Child {
ID = 2
}
},
{
new Child {
ID = 3
}
}
}
}
},
{
new Parent {
ID = 2,
Childs = new List<Child> {
{
new Child {
ID = 3
}
},
{
new Child {
ID = 4
}
},
{
new Child {
ID = 5
}
}
}
}
}
};
我想查询此获得以下结果:
[
{
Child = 1,
InParent = [1]
},
{
Child = 2,
InParent = [1]
},
{
Child = 3,
InParent = [1, 2]
},
{
Child = 4,
InParent = [2]
},
{
Child = 5,
InParent = [2]
},
]
编辑:我想首先拼合孩子的一种方法使用SelectMany
& Distinct
,但不知道如何将其再次链接到父级:
var foo =
from childId in parents.SelectMany(x => x.Childs).Select(x => x.ID).Distinct()
select
new
{
childId = childId,
inParent = // Missing Part
};
在问一个问题之前,你有尝试过什么吗?你有什么问题? – wudzik
当然,我试图用SelectMany/Distinct扁平孩子,它返回所有涉及孩子的清单,但没有连接到他们所属的父母。当然,我可以循环遍历它,我的问题是如何在LINQ查询中实现这一点。 –