2016-03-15 36 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条款的恒定值组。但是使用常数就是在一般情况下如何达到你想要的。