Reputation: 550
Trying write a simple SQL query as LINQ.
This is the SQL:
SELECT p.id, p.customer, SUM(pd.total_price)
FROM purchases p JOIN purchases_details pd ON p.id = pd.purchase_id
GROUP BY pd.purchase_id
My best LINQ so far:
var purchases_with_details = from p in db.Purchases
join pd in db.Purchases_details on p.Id equals pd.purchase_id
group pd by pd.purchase_id into pdg
select new { ??? };
Problem is that I can only write pdg.*
in the select new { }
.
I would like to write something like { p.id, p.customer, pdg.Sum(o => o.total_price) }
Anyone know how to do that?
Upvotes: 1
Views: 188
Reputation: 3760
You can try this one
var purchases_with_details = from p in db.Purchases
join pd in db.Purchases_details on p.Id equals pd.purchase_id
group pd by pd.purchase_id into pdg
select new {
PurchaseID=pdg.Key.purchase_id,
TOTAL=pdg.Sum(x=>x.total_price)
};
Upvotes: 0
Reputation: 856
Try:
var purchases_with_details = from pd in db.Purchases_details
group pd by pd.purchase_id into pdg
//join *after* group
join p in db.Purchases on pdg.Key equals p.Id
select new
{
Id = p.Id,
Cust =p.customer,
TotalPrice = pdg.Sum(y => y.total_price)
};
Upvotes: 1