使用 LINQ 获取平均值
Posted
技术标签:
【中文标题】使用 LINQ 获取平均值【英文标题】:Get Average Using LINQ 【发布时间】:2011-06-03 04:56:38 【问题描述】:希望有人可以帮助我使用 LINQ 语法来计算平均值。例如,我有以下 LINQ 查询:
var rates = from rating in ctx.Rates
where rating.Id == Id
select new
UserId = rating.UserId,
Rating = rating.Rating
;
如果返回 10 条记录,我需要计算 Rating 字段的平均值。它在我的数据库中被定义为 Double。我正在使用 LINQ to EF。因此,我将分配 UserId、MiscId,而 Rating 将是返回记录的平均值。我将一个对象传回给客户端代码。
【问题讨论】:
【参考方案1】:double RatingAverage = ctx.Rates.Where(r => r.Id == Id).Average(r => r.Rating);
【讨论】:
非常简单。谢谢! 是的 - 这很棒【参考方案2】:您是否在寻找每个用户 ID 的平均评分?如果是这样,那么您需要同时使用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()
);
【讨论】:
【参考方案3】:如果您不想单独计算平均值并且评分来自另一个表,这也可以工作
var query = (from u in db.Users
where rating.Id == Id
select new ViewModel
UserId = rating.UserId
Rating = (from c in db.Comments where c.fkUserId.Equals(u.Id) select c.StarRating).Average()
).ToList();
return query;
它将返回评分平均值。
注意: 将 Rating 用作可空的 double 类型,即 double? Rating
【讨论】:
以上是关于使用 LINQ 获取平均值的主要内容,如果未能解决你的问题,请参考以下文章