2016-11-13 10 views
0

LINQでT-SQLクエリの下に書き込もうとしています。しかし、私は構文を理解できません。ここで私を助けてください。このT-SQLクエリをLINQ構文に変換する方法?

SELECT 
    MONTH(O.Date) AS Month, 
    SUM(P.Price * PO.Quantity) AS OrderSumPerMonth 
FROM 
    Products P 
    INNER JOIN ProductOrders PO ON P.ProductId = PO.ProductId 
    INNER JOIN Orders O ON PO.OrderId = O.OrderId 
GROUP BY 
    MONTH(O.Date); 
+1

元のSQLクエリにバグがあるかもしれません:別の年から数ヶ月が結合されますので、年間無視して、一ヶ月、数であなたのグループ。これは意図的ですか? – Dai

+1

SQLをポストして変換を依頼しないでください。少なくともクラスモデルを表示して、ナビゲーションプロパティと関連の多重度を確認します。また、どのタイプのLINQをターゲットにしているのか(エンティティには?)、*と*は自分の最初の努力を示します。彼らはあなたが思うかもしれないよりも、私たちにもっと多くを明確にします。 –

答えて

1
var query = dbContext.ProductOrders 
    .GroupBy(po => new { po.Order.Date.Year, po.Order.Date.Month }) 
    .Select(grp => new 
    { 
     grp.Key, 
     OrderSumPerMonth = grp.Sum(po => po.Product.Price * po.Quantity) 
    }); 

foreach(var row in query) { 
    WriteLine("{0}/{1} - {2:C}", row.Key.Year, row.Key.Month, row.OrderSumPerMonth); 
} 
+0

ありがとうDai!それは完璧に働いた。 – Kran

関連する問題