Mit einer Liste von Typ A, die jeweils eine Liste von Typ B enthalten, was ist der beste Weg, um eine Liste aller Typ B zu erhalten, die jeweils eine Liste des Typs A enthalten, zu dem sie gehören?Invertierte verschachtelte Kollektionen in LINQ
Nachdem eine Liste wie folgt aus:
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
}
}
}
}
}
};
Ich mag diese Abfrage das folgende Ergebnis zu erhalten:
[
{
Child = 1,
InParent = [1]
},
{
Child = 2,
InParent = [1]
},
{
Child = 3,
InParent = [1, 2]
},
{
Child = 4,
InParent = [2]
},
{
Child = 5,
InParent = [2]
},
]
EDIT: habe ich versucht, einen Ansatz, um den Childs abzuflachen ersten mit & Distinct
, aber nicht sicher, wie Sie dies wieder mit dem übergeordneten verknüpfen:
var foo =
from childId in parents.SelectMany(x => x.Childs).Select(x => x.ID).Distinct()
select
new
{
childId = childId,
inParent = // Missing Part
};
Haben Sie schon etwas probiert, bevor Sie eine Frage gestellt haben? Was ist dein Problem? – wudzik
Sicher, ich habe versucht, die Kinder mit SelectMany/Distinct zu glätten, die die eindeutige Liste aller beteiligten Kinder zurückgibt, aber ohne Verbindung zu dem Elternteil, wo sie gehörten. Natürlich könnte ich mit Schleifen durchlaufen, meine Frage ist, wie dies in einer LINQ-Abfrage zu erreichen. –