2009-07-08 16 views
1

におけるインナーjoning私は、LINQのにこれを翻訳しようとしていますし、それを把握することはできません。複数のグループ化、LINQの

SELECT 
    CustomerOrder.ShipState, MONTH(OrderFulfillment.OrderDate) AS Mnth, 
    YEAR(OrderFulfillment.OrderDate) AS Yer, 
    SUM(OrderFulfillment.Tax) AS TotalTax 
FROM 
    OrderFulfillment INNER JOIN 
     CustomerOrder ONOrderFulfillment.OrderID =CustomerOrder.OrderID 
WHERE 
    (OrderFulfillment.Tax > 0) 
GROUP BY 
    CustomerOrder.ShipState, MONTH(OrderFulfillment.OrderDate), 
    YEAR(OrderFulfillment.OrderDate) 
ORDER BY 
    YEAR(OrderFulfillment.OrderDate) DESC, CustomerOrder.ShipState, 
    MONTH(OrderFulfillment.OrderDate) DESC 

私はLinqpadを持っていると例の束を経てきたが、これを把握することはできません。

答えて

0

私はあなたがこのような何かをしたいと思う:

は、ここで(おそらく)正しい方向にあなたを指すことがあり、私は最近やった何かそれをコンパイルするには、しかし、私はこれがあなたが望む線に沿った何かだと思う。

アイデアは、まず顧客と注文をリンクするために参加を実行することです。次に、フィルタ条件を適用します。

その時点で、特定のグループを持つすべての注文を取得したいので、グループ演算子が適用されます。

最後に、結果を注文し、各グループのキーからすべての情報を選択し、各グループの税金を合計します。

0

まず第一に、あなたが把握できないものを知ることはまず楽しいことです。あなたが完全に紛失していて、どこから始めるべきかわからない場合は、linqへの参加とグループ分けのためにgoogleを利用する必要があります。私が試したことがない

from c in CustomerOrder 
    join o in OrderFulfillment on c.OrderId equals o.OrderId 
where 
    o.Tax > 0 
group o by 
    new { c.ShipState, Mnth = of.OrderDate.Month, Yer = of.OrderDate.Year } 
     into g 
orderby 
    g.Key.Yer descending, g.ShipState, g.Key.Mnth descending 
select 
    new { g.Key.ShipState, g.Key.Mnth, g.Key.Yer, 
    TotalTax = g.Sum(i => i.Tax) }; 

// This groups items by category and lists all category ids and names 
from ct in Categories 
    join cst in Category_Subtypes 
    on ct.Category_Id equals cst.Category_Id 
    join st in Subtypes 
    on cst.Subtype_Id equals st.Subtype_Id 
where 
    st.Type_Id == new Guid(id) 
group ct by new { ct.Category_Id, ct.Display_Text } into ctg 
select new 
{ 
    Id = ctg.Key.Category_Id, 
    Name = ctg.Key.Display_Text 
} 
+0

これは大きな助けとなりました - ありがとうございました! – Slee