使用LINQ获得平均值

oba*_*sta 38 c# linq

希望有人能帮助我使用LINQ语法来计算平均值.例如,我有以下LINQ查询:

var rates = from rating in ctx.Rates  
            where rating.Id == Id  
            select new 
            {   
                UserId = rating.UserId,  
                Rating = rating.Rating  
            };  
Run Code Online (Sandbox Code Playgroud)

如果返回10条记录,我需要在Rating字段上计算平均值.它在我的DB中被定义为Double.我正在使用LINQ到EF.所以我会分配UserId,MiscId,而评级将是返回记录的平均值.我将一个对象传递回客户端代码.

Ada*_*kis 90

double RatingAverage = ctx.Rates.Where(r => r.Id == Id).Average(r => r.Rating);
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案.谢谢. (8认同)

tva*_*son 32

您是否在寻找每个用户ID的平均评分?如果是这样,那么您需要同时使用GroupByAverage.

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()
                }); 
Run Code Online (Sandbox Code Playgroud)