A segunda vez que você chama .SelectMany(x => x.Contacts)
, você está trabalhando com uma coleção de ContactDetails
. É duvidoso que você possa usar SelectMany
nele. Você precisaria usar Select
em vez de.
SelectMany
é usado quando você deseja selecionar várias coleções de itens e colocá -los em um IEnumerable
. Select
é usado em campos individuais. Já que você está trabalhando com objetos do tipo ContactDetail
(que eu presumo só pode ter um contato), você precisaria de uso Select
EDIT: Aqui está o que você está fazendo em poucas palavras, passo a passo:
groups_to_querry.SelectMany(x => x.Contacts)
: De todos os grupos que quero consultar, selecione todos os seus muitos contatos. Cada grupo tem muitos contatos, então coloque -os em um único IEnumerable
coleção de tipo Contact
.Where(x => x.ID == Guid.Empty)
: ... mas apenas aqueles contatos com um ID vazio
.SelectMany(p => p.ContactDetails)
: Em seguida, selecione todos esses contatos de contatos de contatos. Cada contato tem muitos correios de contato, então coloque -os em um único IEnumerable
coleção de tipo ContactDetail
.Where(x => x.ID == Guid.Empty)
: ... mas apenas aqueles contactDetails com um ID vazio
.SelectMany(x => x.Contacts);
: Agora selecione cada um dos muitos contatos dos contatos do ContactDetails. No entanto, como o compilador sabe que existe uma relação um para muitos entre contatos e contactDetails (e não o contrário), essa afirmação não é possível e, portanto, mostra um erro de compilação