Во второй раз, когда вы звоните .SelectMany(x => x.Contacts)
, в настоящее время вы работаете с коллекцией ContactDetails
. Анкет Сомнительно, что вы сможете использовать SelectMany
в теме. Вам нужно использовать Select
вместо.
SelectMany
используется, когда вы хотите выбрать несколько коллекций элементов и положить их в один IEnumerable
. Select
используется на отдельных полях. Поскольку вы работаете с объектами типа ContactDetail
(что, я полагаю, может иметь только один контакт), вам нужно использовать Select
Изменить: вот что вы делаете в двух словах, шаг за шагом:
groups_to_querry.SelectMany(x => x.Contacts)
: Из всех групп, которые я хочу запросить, выберите все их многочисленные контакты. У каждой группы много контактов, поэтому поместите их все в один IEnumerable
Коллекция типа Contact
.Where(x => x.ID == Guid.Empty)
: ... но только эти контакты с пустым идентификатором
.SelectMany(p => p.ContactDetails)
: Затем выберите все эти контакты много контактов. Каждый контакт имеет много контактов, поэтому поместите их все в один IEnumerable
Коллекция типа ContactDetail
.Where(x => x.ID == Guid.Empty)
: ... но только те контакты с пустым идентификатором
.SelectMany(x => x.Contacts);
: Теперь выберите каждый из контактов ContactDetails. Однако, поскольку компилятор знает, что между контактами и контактами (а не наоборот) существует связь между контактами и контактами (а не наоборот), и, следовательно, показывает ошибку компиляции