C# Linq объединяет две сущности в DTO, но предоставляет счетчик одной из этих сущностей. - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть следующее:

        var result = this._context.Clients.Join(this._context.Jobs, c => c.Id, j => j.Id, (c, j) =>
            new ClientIndexDto
            {
                Id = c.Id,
                ClientNo = c.ClientNo,
                Active = c.Active,
                ClientFirstName = c.ClientFirstName,
                ClientLastName = c.ClientLastName,
                Company = c.Company,
                CompanyName = c.CompanyName,
                MobilePhone = c.MobilePhone,
                IsWarrantyCompany = c.IsWarrantyCompany,
                JobsCount = ???

            });

Я хотел бы получить количество рабочих мест, которые есть у клиента ... Есть ли способ сделать это?

Ответы [ 2 ]

0 голосов
/ 28 апреля 2020

Вы также можете попробовать этот код:

 var result = (from b in _context.Clients.ToList()
                      join a in _context.Jobs.ToList() on b.Id equals a.Id
                      group a by b into g
                      select new ClientIndexDto
                      {
                          Id = g.Key.Id,
                          ClientNo = g.Key.ClientNo,
                          Active = g.Key.Active,
                          ClientFirstName = g.Key.ClientFirstName,
                          ClientLastName = g.Key.ClientLastName,
                          Company = g.Key.Company,
                          CompanyName = g.Key.CompanyName,
                          MobilePhone = g.Key.MobilePhone,
                          IsWarrantyCompany = g.Key.IsWarrantyCompany,
                          JobsCount = g.Count()
                      });
0 голосов
/ 27 апреля 2020

Как предполагает Чжу и Саджид, GroupJoin должен работать:

var result = this._context.Clients.GroupJoin(this._context.Jobs, c => c.Id, j => j.Id, (c, j) =>
        new ClientIndexDto {
           Id = c.Id,
           ClientNo = c.ClientNo,
           Active = c.Active,
           ClientFirstName = c.ClientFirstName,
           ClientLastName = c.ClientLastName,
           Company = c.Company,
           CompanyName = c.CompanyName,
           MobilePhone = c.MobilePhone,
           IsWarrantyCompany = c.IsWarrantyCompany,
           JobsCount = j.Count()
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...