Вы, вероятно, после SelectMany ...
IList<string> emails = personsRepository
.Query()
.SelectMany(x => x.Emails.Select(e => e.Email))
.ToList();
IList<string> phoneNumbers = personsRepository
.Query()
.SelectMany(x => x.Phones.Select(e => e.Number))
.ToList();
РЕДАКТИРОВАТЬ: ОК .... так что просто ...
var personEmails = personsRepository
.Query()
.Select(x => new PersonDto
{
Name = x.Name,
Emails = x.Emails.Select(y => y.Email),
}).ToList();
var personPhones = personsRepository
.Query()
.Select(x => new PersonDto
{
Name = x.Name,
Phones = x.Phones.Select(y => y.Number),
}).ToList();
Это приведет к двум запросам. Первое объединение на Персоне и электронной почте, второе объединение на Персоне и Телефонах. По сравнению с вашей первой попыткой объединения таблиц Person, Email и Phone в одном запросе.
Если вам интересно, есть ли способ указать EF разбить один запрос LINQ на несколько запросов SQL, я бы сказал, что это невозможно.