La seconda volta che chiedi .SelectMany(x => x.Contacts)
, stai attualmente lavorando con una raccolta di ContactDetails
. È dubbio che saresti in grado di usare SelectMany
su di esso. Dovresti usare Select
invece.
SelectMany
viene utilizzato quando si desidera selezionare più raccolte di elementi e inserirle in una IEnumerable
. Select
viene utilizzato su singoli campi. Dato che stai lavorando con oggetti di tipo ContactDetail
(che presumo possa avere solo un contatto), dovresti utilizzare Select
EDIT: ecco cosa stai facendo in poche parole, passo dopo passo:
groups_to_querry.SelectMany(x => x.Contacts)
: Da tutti i gruppi che voglio interrogare tutti i loro numerosi contatti. Ogni gruppo ha molti contatti, quindi mettili tutti in un singolo IEnumerable
Raccolta di tipo Contact
.Where(x => x.ID == Guid.Empty)
: ... ma solo quei contatti con un ID vuoto
.SelectMany(p => p.ContactDetails)
: Quindi selezionare tutti i tanti contatti di contatti. Ogni contatto ha molti contactDetails, quindi mettili tutti in un singolo IEnumerable
Raccolta di tipo ContactDetail
.Where(x => x.ID == Guid.Empty)
: ... ma solo quei contactDetails con un ID vuoto
.SelectMany(x => x.Contacts);
: Ora seleziona ciascuno dei numerosi contatti dei contatti. Tuttavia, dal momento che il compilatore sa che esiste una relazione da uno a molti contatti e contatti (e non viceversa) tale affermazione non è possibile e quindi mostra un errore di compilazione