2016-03-15 16 views
6

Veritabanında aşağıdaki verileri sahip olduğumu varsayalım.Birden çok toplam almak için LINQ nasıl kullanılır

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

Ben ValueA toplamını almak için bir LINQ sorgusu ve ayrıca Category == 1 ile tüm satırlar için ValueB toplamını yazabilir nasıl?

Tüm verileri yükleyebildiğimi ve yüklenen verilerde Sum kullanın, ancak bunları veritabanında toplamayı tercih ederim.

group by'u kullanabileceğimi biliyorum, ancak hiçbir şeye göre gruplama yapıyorum. Sadece bu iki toplamı veriden istiyorum.

+0

yapabilirsiniz 1. Geliş bu ilgili soru gibi sabit bir değere göre gruplandırmak http://stackoverflow.com//questions/10239987/get -sum-of-the iki sütun-bir-linq-sorgu-olmayan gruplamalar – juharr

cevap

3

, bu deneyebilirsiniz:

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

yapabilirsiniz sabit

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) 
      }; 

tarafından Yoksa octavioccl da Category grup nedeniyle where maddesinin sabit bir değer olacaktır çünkü belirttiği gibi grubudur. Ama bir sabit kullanarak genel durumda ne istediğinizi elde edebilirsiniz. Eğer EF kullanıyorsanız

İlgili konular