在LINQ中联接多个表

时间:2019-06-22 23:53:40

标签: c# linq join group-by

我正在联接多个表来创建将要使用的对象。从下面的LINQ中,您可以看到连接,到目前为止,一切都很好。我正在尝试将另一个表SERVICES加入CLIENT。

客户->服务是一对多的关系,一个客户可以拥有许多服务。在“服务”中,USERS表中有一个外键User.Id,我也将用户电子邮件和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();

0 个答案:

没有答案