2016-03-15 39 views
6

比方說,我有一個數據庫中的以下數據。如何使用LINQ獲得多個總計

class Data 
{ 
    public int Category { get; set; } 
    public int ValueA { get; set; } 
    public int ValueB { get; set; } 
} 

我如何寫一個LINQ查詢來獲取的ValueA之和也的ValueB所有行與Category == 1的總和?

我知道我可以加載所有數據,然後使用上加載的數據Sum,但寧願他們總在數據庫中。

我知道我可以使用group by但我不會被任何東西分組。我只想從數據中得到這兩個總數。

+0

您可以通過像1.檢查出此相關的問題一個恆定值組http://stackoverflow.com//questions/10239987/get -sum-的兩柱功能於一身,LINQ查詢,而無需編組 – juharr

回答

3

如果使用的是EF,你可以試試這個:

var result= context.Data.Where(d=>d.Category == 1) 
         .GroupBy(d=>d.Category) 
         .Select(g=>new { 
             SumA=g.Sum(d=>d.ValueA), 
             SumB=g.Sum(d=>d.ValueB) 
             } 
           ); 
2

您可以通過不斷

var result = from d in context.Data 
      where d.Category == 1 
      group d by 1 into g 
      select 
      {     
       ASum = g.Sum(d => d.ValueA), 
       BSum = g.Sum(d => d.ValueB) 
      }; 

或者作爲octavioccl指出還可以通過Category組,因爲這將是因爲where條款的恆定值組。但是使用常數就是在一般情況下如何達到你想要的。