是否可以按对象属性进行分组,但是在Key中有整个对象?

时间:2016-01-26 20:15:53

标签: linq

假设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 进行分组,但是将整个客户对象作为密钥返回?

1 个答案:

答案 0 :(得分:0)

继续按客户ID(ID为密钥)对它们进行分组,然后从组中的第一项中提取客户。

var resultsByCustomer = 
    from g in query.GroupBy(x => x.Customer.Id)
    let customer = g.Select(x => x.Customer).FirstOrDefault()
    select ...;