有一個類型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查詢中實現這一點。 –