2009-07-01 16 views
1

私はLinqをSQLに使用して、C#で次のクエリをどのように表現することができるか分かりません。ここでは、純粋なSQLの短い抜粋は次のとおりです。LinqとSQLの結合とグループ化を実行しますか?

select t1.WholesalerID, t1.RetailerID, 
    sum(t1.Col1) as 'Column 1', 
    sum(t2.Col1) as 'Other Column 1', 
    (sum(t1.Col1) - sum(t2.Col1)) as 'Column 1 Difference', 
    sum(t1.Col2) as 'Column 2', 
    sum(t2.Col2) as 'Other Column 2', 
    (sum(t1.Col2) - sum(t2.Col2)) as 'Column 2 Difference' 
    from Table1 t1 
    inner join Table2 t2 on t1.WholesalerID = t2.WholesalerID 
group by t1.WholesalerID, t1.RetailerID 

さて、私はLINQ to SQLのをやっ参加し、グループのことで前に、私は一緒にこれらをやって行くのか確信しています。私は、結合されたテーブルから値を合計しようとしているときに問題にぶつかります。ありがとう。

+1

申し訳ありませんが、これは素朴かもしれませんが、準備ができているSQLクエリがある場合は、なぜ実際にLINQを使用したいのですか?ちょうどそれを使用するだけで十分なはずです。参照してください:http://www.codinghorror.com/blog/archives/001281.html – mfloryan

+0

私はすべて一緒に使用してきたことを真実のためにLinqに固執したいと思います。それから逸脱しないのが好きです。ありがとう。 – blparker

+0

hm ...左足、右足、またはその両方で自分を撃ってみたいのですか? –

答えて

0

私は、このソリューションに達した。(しかし、それをテストしていませんでした)

 var qry = from t in 
         (from t1 in Table1 
         join t2 in Table2 on t1.WholesalerID equals t2.WholesalerID 
         select new { t1, t2 }) 
        group t by new { t.t1.WholesalerID, t.t1.RetailerID } into g 
        select new MyTypeWithDifferenceProp 
        { 
         WholesalerID = g.Key.WholesalerID, 
         RetailerID = g.Key.RetailerID, 
         Column1 = g.Sum(e => e.t1.Col1), 
         OtherColumn1 = g.Sum(e => e.t2.Col1), 
         Column2 = g.Sum(e => e.t1.Col2), 
         OtherColumn2 = g.Sum(e => e.t2.Col2), 
        }; 

このMyTypeWithDifferencePropColumn1DifferenceColumn2Differenceがすでに定義されています。

+0

こんにちはBrunoに感謝します。コードはうまくいった! – blparker

関連する問題