【问题标题】:C# Linq join transforming the two entities into DTO but provide a count of one of those entitiesC# Linq join 将两个实体转换为 DTO,但提供其中一个实体的计数
【发布时间】:2020-04-27 13:45:17
【问题描述】:

我有以下几点:

        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 = ???

            });

我想获取客户的工作数量。有没有办法做到这一点?

【问题讨论】:

标签: c# linq asp.net-core entity-framework-core


【解决方案1】:

按照朱和萨吉德的建议,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()
        });

【讨论】:

    【解决方案2】:

    你也可以试试这个代码:

     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()
                          });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-01
      • 2019-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-10
      • 2018-09-14
      相关资源
      最近更新 更多