2017-01-28 6 views
1

Попробуйте написать простой SQL-запрос как LINQ.SQL to LINQ, group by and sum

Это 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 

Мой лучший LINQ до сих пор:

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 { ??? }; 

Проблема заключается в том, что я могу писать только pdg.* в select new { }.

Я хотел бы написать что-то вроде { p.id, p.customer, pdg.Sum(o => o.total_price) }

Любой знает, как сделать это?

+0

ли это выражение сумма не работает для вас? – Edward

+0

Выражение суммы работает, но я не могу написать p. * Parts (iepid и p.customer) – Louisa

+0

try pdg.id, pdg.customer –

ответ

1

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) 
             }; 
+0

Отлично. Благодарю. – Louisa

0

Вы можете попробовать это один

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) 
          };