LINQ

2011-01-04 8 views
30

का उपयोग करके औसत प्राप्त करें किसी को उम्मीद है कि कोई औसत गणना करने के लिए LINQ वाक्यविन्यास के साथ मेरी सहायता कर सकता है। उदाहरण के लिए, मेरे पास निम्न LINQ क्वेरी है:LINQ

var rates = from rating in ctx.Rates 
      where rating.Id == Id 
      select new 
      { 
       UserId = rating.UserId, 
       Rating = rating.Rating 
      }; 

यदि 10 रिकॉर्ड लौटाए गए हैं, तो मुझे रेटिंग फ़ील्ड पर औसत की गणना करने की आवश्यकता है। इसे मेरे डीबी में डबल के रूप में परिभाषित किया गया है। मैं LINQ से EF का उपयोग कर रहा हूँ। तो मैं UserId, MiscId असाइन कर रहा हूं, और रेटिंग रिकॉर्ड किए गए रिकॉर्ड पर औसत होगी। मैं एक ऑब्जेक्ट को क्लाइंट कोड पर वापस भेज रहा हूं।

उत्तर

27

क्या आप प्रति उपयोगकर्ता आईडी औसत रेटिंग की तलाश कर रहे हैं? यदि ऐसा है, तो आपको GroupBy और Average दोनों का उपयोग करने की आवश्यकता है।

var rates = ctx.Rates 
       .Where(r => r.Id == Id) 
       .GroupBy(g => g.UserId, r => r.Rating) 
       .Select(g => new 
       { 
        UserId = g.Key, 
        Rating = g.Average() 
       }); 
70
double RatingAverage = ctx.Rates.Where(r => r.Id == Id).Average(r => r.Rating); 
+0

सरल-एन-विनम्र :) – user9371102

+0

बहुत आसान। धन्यवाद! –

+4

यह स्वीकार्य उत्तर होना चाहिए। धन्यवाद। –

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