2011-01-04 43 views
30

Esperando que alguien me ayude con la sintaxis de LINQ para calcular un promedio. Por ejemplo, tengo la siguiente consulta LINQ: se devuelvenObtener promedio con LINQ

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

si 10 registros, tengo que calcular el promedio en el campo Clasificación. Se define como un doble en mi base de datos. Estoy usando LINQ para EF. Así que estaría asignando UserId, MiscId, y el Rating sería el promedio en los registros devueltos. Estoy pasando un objeto al código del cliente.

Respuesta

27

¿Está buscando una calificación promedio por ID de usuario? Si es así, entonces necesita usar ambos GroupBy y 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-humilde :) – user9371102

+0

muy simple. ¡Gracias! –

+4

Esta debería ser la respuesta aceptada. Gracias. –