2017-01-28 12 views
1

LINQとして単純なSQLクエリを書きます。SQLをLINQにグループ化し、合計を

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

問題は、私だけselect new { }pdg.*を書くことができるということです。

私は誰もがそれを行う方法を知って

{ p.id, p.customer, pdg.Sum(o => o.total_price) }のようなものを書きたいですか?

+0

を試すことができますが、合計式はあなたのために働いていないということですか? – Edward

+0

合計式が動作していますが、p。*の部分(iepidとp.customer)を書くことができません – Louisa

+0

pdg.id、pdg.customerを試してください –

答えて

1

試してみてください。

 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

あなたはこの1

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) 
          }; 
関連する問題