Объединение нескольких таблиц в LINQ - PullRequest
1 голос
/ 23 июня 2019

Я объединяю несколько таблиц, чтобы создать объект, который буду использовать. Из следующего LINQ вы можете увидеть соединения, и пока это хорошо. Я пытаюсь присоединиться к другому столу УСЛУГИ КЛИЕНТУ.

КЛИЕНТ -> СЕРВИС - это связь один ко многим, у одного клиента может быть много услуг. В Сервисе есть внешний ключ User.Id из таблицы USERS, где я храню электронные письма своих пользователей и ClientID в качестве внешнего ключа.

То, чего я пытаюсь достичь, это заполнить этот объект. Мне нужно присоединиться и каким-то образом сгруппироваться на клиенте и получать электронную почту ServiceOwners от каждой службы, которую клиент имеет в списке строк.

    public class ClientEmailContact
    {
        public string Email { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string ClientName { get; set; }
        public bool EmailBatchExclusion { get; set; }
        public string ClientStatus { get; set; }
        public int CsOwnerId { get; set; }
        public int ClientId { get; set; }
        public List<string> ServiceOwnerEmails { get; set; }
    }

    var result = (from c in _dataContext.Clients
                  join ca in _dataContext.Users on c.Id equals ca.ClientId
                  join a in _dataContext.UserSettings on ca.UserId equals a.Id

                  select new ClientEmailContact
                  {
                      Email = a.Users.Email,
                      FirstName = a.FirstName,
                      LastName = a.Surname,
                      ClientName = c.ClientName,
                      EmailBatchExclusion = a.Users.EmailBatchExclusion,
                      ClientStatus = c.ClientStatus,
                      CsOwnerId = c.ClientServiceOwnerId ?? 0,
                      //ServiceOwnerEmails = ??? --------- ???


                  }).AsQueryable();
...