Das zweite Mal, dass Sie anrufen .SelectMany(x => x.Contacts)
, Sie arbeiten derzeit mit einer Sammlung von ContactDetails
. Es ist zweifelhaft, dass Sie in der Lage sein würden, sie zu verwenden SelectMany
darauf. Sie müssten verwenden Select
stattdessen.
SelectMany
wird verwendet, wenn Sie mehrere Elementkollektionen auswählen und in einen einsetzen möchten IEnumerable
. Select
wird auf einzelnen Feldern verwendet. Da arbeiten Sie mit Objekten vom Typ ContactDetail
(Ich gehe davon aus, dass ich nur einen Kontakt haben kann), Sie würden verwenden Select
Bearbeiten: Hier ist was Sie auf den Punkt gebracht haben, Schritt für Schritt:
groups_to_querry.SelectMany(x => x.Contacts)
: Aus allen Gruppen, die ich abfragen möchte, wählen Sie alle ihre vielen Kontakte aus. Jede Gruppe hat viele Kontakte, also setzen Sie sie alle in eine einzelne IEnumerable
Sammlung von Typ Contact
.Where(x => x.ID == Guid.Empty)
: ... aber nur diese Kontakte mit einer leeren ID
.SelectMany(p => p.ContactDetails)
: Wählen Sie dann alle Kontaktdetails von diesen Kontakten aus. Jeder Kontakt hat viele Kontaktdetails, also geben Sie sie alle in einen einzigen IEnumerable
Sammlung von Typ ContactDetail
.Where(x => x.ID == Guid.Empty)
: ... aber nur diese Kontaktdetails mit einer leeren ID
.SelectMany(x => x.Contacts);
: Wählen Sie nun die vielen Kontakte der ContactDetails aus. Da der Compiler jedoch weiß, dass es eine Eins-zu-Viele-Beziehung zwischen Kontakten und Kontaktdetails (und nicht umgekehrt) gibt, ist diese Aussage nicht möglich und zeigt somit einen Kompilierfehler an