我有以下问题。
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 = ???
});
我想得到一个客户的工作数量... 有什么方法可以做到这一点?
按照朱先生和Sajid的建议,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()
});
你也可以试试这段代码
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()
});