假设查询
如下所示:
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,但我希望它是整个客户对象,因为我想访问该客户的其他属性(但不是我想要分组的属性)。
我可以这样做:
var resultsByCustomer = query.GroupBy(x => x.Customer)
但这不起作用,因为它似乎是按 Customer 类上的对象相等性进行分组,而不是按客户 ID 进行分组。
是否可以按客户 Id 进行分组,但将整个客户对象作为键返回?
最佳答案
继续按客户 ID(以 ID 作为键)对它们进行分组,然后从组中的第一个项目中提取客户。
var resultsByCustomer =
from g in query.GroupBy(x => x.Customer.Id)
let customer = g.Select(x => x.Customer).FirstOrDefault()
select ...;
关于linq - 是否可以按对象属性进行分组,但将整个对象放在 Key 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35023072/