2009-03-29 18 views
5
class Category 
{   
    public string Name { get; set; } 
    public int Count { get; set;} 
} 


Name Count 
AA 2 
BB 3 
AA 4 

मैं एक IEnumerable<Category>LINQ कुल

है और अद्वितीय नाम के साथ श्रेणियों की एक सूची और कई प्रविष्टियाँ का योग

आउटपुट

Name Count 
AA 6 
BB 3 

अद्यतन प्राप्त करना चाहते हैं

class Category 
{ 
public string Name { get; set; } 
public int CountA { get; set;} 
public int CountB { get; set;} 
public string Phone { get; set;} 
} 

मैं दो कॉलम कैसे योग होगा। और फोन स्तंभ अंतिम पंक्ति या किसी भी पंक्ति

उत्तर

1
var foo = new List<Category>() { 
       new Category() { Name = "AA", Count = 2}, 
       new Category() { Name = "BB", Count = 3}, 
       new Category() { Name = "AA", Count = 4} 
      }; 

      var bar = foo.GroupBy(c => c.Name).Select(g => new Category(){ Name = g.Key, Count = g.Sum(c => c.Count) }); 
+0

वर्ग श्रेणी { सार्वजनिक स्ट्रिंग नाम {मिल; सेट; } सार्वजनिक int countA {प्राप्त करें; सेट;} सार्वजनिक int countB {get; सेट;} सार्वजनिक स्ट्रिंग फोन {प्राप्त करें; सेट;} } मैं कैसे दो कॉलम का योग होता है। और फोन कॉलम आखिरी पंक्ति या कोई पंक्ति हो सकती है –

5

आपका अपडेट किया गया प्रश्न फोन नंबर के मामले में पूरी तरह स्पष्ट नहीं है हो सकता है, लेकिन मुझे लगता है आप चाहते हैं कुछ की तरह:

var query = from category in list 
       group category by category.Name into grouped 
       select new { Name = grouped.Key, 
          SumA = grouped.Sum(x => x.CountA), 
          SumB = grouped.Sum(x => x.CountB), 
          Phone = grouped.Last().Phone }; 

बदलने grouped.Last() से grouped.First() वैसे भी अधिक कुशल होगा।

इस तरह से कई समुच्चय का मूल्यांकन सामान्य रूप में बहुत कुशल नहीं है। Push LINQ परियोजना अपने आप द्वारा विकसित और मार्क Gravell यह एक बहुत अधिक कुशल बनाता है उपयोग करने के लिए काफी के रूप में आसान नहीं किया जा रहा है की कीमत पर। यदि आपको बहुत सारे डेटा से निपटने की ज़रूरत है तो आप इसे देखना चाहेंगे।

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