2012-04-25 24 views
10

各顧客の注文アイテムのすべての(有料)価格の合計を選択したいと考えています。私はEFでこれを行う方法がわからないEntity FrameworkのGROUPおよびSUM

SELECT c.name,SUM(oi.price * oi.count) from customer c 
JOIN order o ON c.id=o.customer_id 
JOIN order_item oi ON o.id=oi.order_id 
JOIN bill b ON b.id=oi.bill_id 
WHERE b.payment_id is NOT null 
GROUP by c.name; 

: は、ここでSQLコマンドです。 例の結果:

John Smith 1500,2 
Allan Babel 202,0 
Tina Crown 3500,78 

(小数点以下point..because価格は10進値ですとしてカンマが使用されている)

答えて

18

あなたの例の結果は、あなたのSQLコマンドと一致していないようですが、私はあなたが探していると思います次のようなものです:

var query = from c in context.Customers 
      join o in context.Orders on c.id equals o.customer_id 
      join oi in context.OrderItems on o.id equals oi.order_id 
      join b in context.bill on oi.bill_id equals b.id 
      where b.payment_id != null 
      group oi by c.name into g 
      select new 
      { 
       Name = g.Key, 
       Sum = g.Sum(oi => oi.price * oi.count), 
      } 
+0

もう一度ありがとうございます。あなたは私の保護者です:)なぜマッチしないようですか? SELECT c.name、SUM() - >には名前といくつかの小数があります。 – quin61

+0

@ quin61 - 問題ありません。 SQLコマンドは、2つの列(Name、Sum)になります。あなたの例では、3つの列(名前、番号、番号)があるようです。カンマが使用されていることを誤解している場合を除き、 – Aducci

+0

カンマが小数点として使用されます。今私は見る - 少し紛らわしい。私はその投稿を編集します – quin61

関連する問題