所以,据我所知,这个小组基本上是这样的:
var query = from c in context.Contacts
join o in context.Orders on c.Id on o.CustomerId
group c by o.Id
select new { g.Key, g.Sum(c => c.Whatever) };
这样的分组只允许我访问c的内容。但是,如果我想要来自表c和o的数据呢?
var query = from c in context.Contacts
join o in context.Orders on c.Id on o.CustomerId
//insert answer here
select new { g.Key, g.Sum(c => c.Whatever), g.Sum(o => o.Whatever) };
这甚至可能吗?
答案 0 :(得分:2)
var query = from c in context.Contacts
join o in context.Orders on c.Id equals o.CustomerId
select new
{
Contact = c,
Order = o
} into ContactAndOrder
group ContactAndOrder by ContactAndOrder.Order.Id into g
select new
{
g.Key,
ContactWhatever = g.Sum(co => co.Contact.Whatever),
OrderWhatever = g.Sum(co => co.Order.Whatever)
};
答案 1 :(得分:1)
Ben的回答有点过于复杂,IMO。像这样反转选择/加入配对会更简单:
var query = from o in context.Orders
join c in context.Contacts on o.CustomerId equals c.Id into Customers
group o by o.Id into g
select new {
g.Key,
ContactWhatever = g.Sum(o => o.Customers.Sum(c => c.Whatever)),
OrderWhatever = g.Sum(o => o.Whatever)
};