LINQ - объединение 3 таблиц и выбор элемента из двух списков - PullRequest
0 голосов
/ 12 мая 2019

У меня есть таблица Company, которая связана с таблицами Address и Contact.Для компании может быть несколько адресов и контактов.

Я присоединяюсь к ним с помощью LINQ и использую GroupBy для группировки по компании, но я не уверен, как получить из нее список адресов и контактов.Единственные примеры, которые я видел, - это просто попытка получить один список для Ключа.

Как мне написать «Выбор», чтобы получить одну компанию со списком адресов и списком контактов?

Ниже приведено то, что у меня есть:

var companiesList = 
    (from company in _context.Company
        join address in _context.Address
        on company.CompanyId equals address.CompanyId
        join contact in _context.Contact
        on company.CompanyId equals contact.CompanyId
        select new { company, address, contact })
    .GroupBy(x => x.company)
    .Select(group => new {
        Company = group.Key,
        Addresses = ??,
        Contacts = ??
    })
    .AsEnumerable();

1 Ответ

0 голосов
/ 12 мая 2019

Вы были довольно близки к ответу. Вы можете использовать

group.ToList().Select(c=>c.address),

и

group.ToList().Select(c=>c.contact)

Полный пример

var companiesList  =  (from company in _context.Company
        join address in _context.Address
        on company.CompanyId equals address.CompanyId
        join contact in _context.Contact
        on company.CompanyId equals contact.CompanyId
        select new { company, address, contact })
    .GroupBy(x => x.company)
    .Select(group => new {
        Company = group.Key,
        Addresses = group.ToList().Select(c=>c.address),
        Contacts = group.ToList().Select(c=>c.contact)
    })
...