假设query
是这样的:
var query = from x in db.Customers
join y in db.Orders
on x.Id Equals y.CustomerId
where ...
select new {Customer = x, Order = y}
我希望按客户分组结果:
var resultsByCustomer = query.GroupBy(x => x.Customer.Id)
这很好,除了现在分组键是客户ID,但我希望它是整个Customer对象,因为我想访问该客户的其他属性(但不是我想要分组的属性)。
我可以这样做:
var resultsByCustomer = query.GroupBy(x => x.Customer)
但这不起作用,因为它似乎在Customer类上按对象相等而不是客户ID。
是否可以按客户 ID 进行分组,但是将整个客户对象作为密钥返回?
答案 0 :(得分:0)
继续按客户ID(ID为密钥)对它们进行分组,然后从组中的第一项中提取客户。
var resultsByCustomer =
from g in query.GroupBy(x => x.Customer.Id)
let customer = g.Select(x => x.Customer).FirstOrDefault()
select ...;