2016-03-15 5 views
6

データベース内に次のデータがあるとします。LINQを使用して複数の合計を取得する方法

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

どのように私はCategory == 1ValueAの合計ともすべての行のValueBの合計を取得するためにLINQクエリを書くことができますか?

すべてのデータをロードしてから、ロードされたデータにSumを使用することはできますが、データベースに合計することをお勧めします。

私はgroup byを使用できますが、私は何でもグループ化しているわけではありません。私はちょうどこれらの2つの合計をデータから求めます。

+0

することはでき1.チェックアウトこの関連する質問のように一定の値でグループhttp://stackoverflow.com//questions/10239987/get -single-of-two-columns-in-one-linq-query-without-grouping – juharr

答えて

3

、あなたはこれを試すことができます。

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

それが原因where句の一定の値になりますので、あなたは一定の

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によりグループもすることができます指摘することができます。しかし、定数を使うことは、あなたが一般的な場合に望むものを達成する方法です。あなたがEFを使用している場合

関連する問題