La deuxième fois que vous appelez .SelectMany(x => x.Contacts)
, vous travaillez actuellement avec une collection de ContactDetails
. Il est douteux que vous puissiez utiliser SelectMany
dessus. Vous auriez besoin d'utiliser Select
Au lieu.
SelectMany
est utilisé lorsque vous souhaitez sélectionner plusieurs collections d'articles et les mettre dans une IEnumerable
. Select
est utilisé sur des champs individuels. Puisque vous travaillez avec des objets de type ContactDetail
(ce que je suppose ne peut avoir qu'un seul contact), vous auriez besoin d'utiliser Select
Edit: Voici ce que vous faites en un mot, étape par étape:
groups_to_querry.SelectMany(x => x.Contacts)
: Depuis tous les groupes que je souhaite interroger, sélectionnez tous leurs nombreux contacts. Chaque groupe a de nombreux contacts, alors mettez-les tous en un seul IEnumerable
Collection de type Contact
.Where(x => x.ID == Guid.Empty)
: ... mais seulement ces contacts avec un identifiant vide
.SelectMany(p => p.ContactDetails)
: Sélectionnez ensuite tous ces nombreux contacts ContactDetails. Chaque contact a de nombreux contacts, alors mettez-les tous en un seul IEnumerable
Collection de type ContactDetail
.Where(x => x.ID == Guid.Empty)
: ... mais seulement ces contacts avec un identifiant vide
.SelectMany(x => x.Contacts);
: Sélectionnez maintenant chacun des nombreux contacts des ContactDetails. Cependant, puisque le compilateur sait qu'il existe une relation un-à-plusieurs entre les contacts et les contacts (et non l'inverse), cette déclaration n'est pas possible, et montre ainsi une erreur de compilation