2012-10-29 140 views
2

這裏的SQL查詢LINQ to SQL查詢乘兩列和計算SUM

Select sum(f.Acres*m.credit1), sum(f.Acres*m.credit2), sum(f.Acres*m.credit3) 
from first f join model m on f.Id = m.fID 
where m.year == 2012 

如何寫LINQ這上面的SQL?

謝謝!

+0

第四砸在谷歌.. http://download.damieng.com/dotnet/LINQToSQLCheatSheet.pdf(PDF方式) –

+1

感謝您的評論。然而,我在乘法和計算總和方面遇到困難。乘法必須從連接中的兩個不同的表中完成,我不知道該怎麼做。 – Aqua267

回答

0

這在Linq中有點棘手,因爲您需要一個組來完成聚合。通過對虛值,分組喜歡它下面會工作:

var q = from f in first 
     join m in model on f.Id equals m.fID 
     where m.year == 2012 
     group new { f, m } by 1 into g 
     select new 
     { 
      credit1 = g.Sum(x => x.f.Acres * x.m.credit1), 
      credit2 = g.Sum(x => x.f.Acres * x.m.credit2), 
      credit3 = g.Sum(x => x.f.Acres * x.m.credit3) 
     }; 

編輯
從閱讀您的意見。 如果你想讓它每年組,你這是怎麼做到這一點:

var q = from f in first 
     join m in model on f.Id equals m.fID 
     where m.year >= 2014 && m.year <= 2020 
     group new { f, m } by m.year into g 
     select new 
     { 
      year = g.Key, 
      credit1 = g.Sum(x => x.f.Acres * x.m.credit1), 
      credit2 = g.Sum(x => x.f.Acres * x.m.credit2), 
      credit3 = g.Sum(x => x.f.Acres * x.m.credit3) 
     }; 
+0

謝謝!我現在能夠獲得理想的結果。我還有一個問題。 – Aqua267

+0

非常感謝。我現在能夠獲得理想的結果。我還有一個問題。如果我將查詢更改爲包含年份範圍而不是1年,那麼如何計算每年的總和值。上面的查詢計算整個和。新的查詢來自f中的第一個 在f.Id上的模型中加入m等於m.fID 其中m.year> = 2014且m.year <= 2020 將新的{f,m}加1到g中 選擇new ....與上面相同 – Aqua267

+0

@Veena更新了您的附加問題的答案。 – Magnus