2011-01-04 21 views
30

Sperare che qualcuno possa aiutarmi con la sintassi LINQ per calcolare una media. Ad esempio, ho la seguente query LINQ:Ottieni media utilizzando LINQ

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

se 10 record vengono restituiti, ho bisogno di calcolare la media sul campo Valutazione. È definito come un doppio nel mio DB. Sto usando LINQ in EF. Quindi assegnerei UserId, MiscId e il Rating sarebbe la media sui record restituiti. Sto passando un oggetto indietro al codice cliente.

risposta

27

Stai cercando una valutazione media per utente? In tal caso, è necessario utilizzare sia GroupBy e 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

simple-n-humble :) – user9371102

+0

molto semplice. Grazie! –

+4

Questa dovrebbe essere la risposta accettata. Grazie. –