2016-03-15 13 views
6

चलो कहते हैं कि मैं एक डेटाबेस में निम्न डेटा करते हैं पाने के लिए।LINQ का उपयोग कैसे करें कई योग

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

मैं Category == 1 वाली सभी पंक्तियों ValueB का योग ValueA की राशि प्राप्त करने के लिए एक LINQ क्वेरी और भी कैसे लिख सकता है?

मैं जानता हूँ कि मैं सभी डेटा लोड कर सकता है और उसके बाद लोड डेटा पर Sum का उपयोग लेकिन डेटाबेस में उन्हें कुल पसंद करेंगे।

मैं जानता हूँ कि मैं group by उपयोग कर सकते हैं, लेकिन मैं कुछ भी द्वारा समूहीकरण नहीं कर रहा हूँ। मैं सिर्फ डेटा से इन दो योग चाहता हूँ।

+0

आप कर सकते हैं इस तरह संबंधित सवाल बाहर 1. जांच एक निरंतर मूल्य द्वारा समूह http://stackoverflow.com//questions/10239987/get -sum के- दो स्तंभों-इन-वन-LINQ क्वेरी-बिना-समूह – 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

आप कर सकते हैं एक निरंतर

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 खंड के कारण हो सकता है कर सकते हैं समूह। लेकिन स्थिरता का उपयोग करना यह है कि आप सामान्य मामले में जो चाहते हैं उसे प्राप्त कर सकते हैं।

संबंधित मुद्दे