我有一个MovieReviewsDataContext上下文,其中包含一个Movie and Review表。
我想检索至少有两条评论的前15部电影,其平均评价优于一般电影评论。
我能写的代码:
var topMovies = movieReviewsDataContext.Movies
.Where(m => m.Reviews.Count > 2)
.Where(m => m.Reviews.Average(r => r.rating) >
movieReviewsDataContext.Reviews.Average(r => r.rating))
.Take(15);
仅检查电影的平均评分是否高于全球平均水平。如何更改它以将其与所有电影的平均值进行比较'平均?
答案 0 :(得分:0)
假设你有
public virtual Movie Movie {get;set;}
实体中的 Review
属性
如果您没有该属性,则可能还有其他东西(例如int MovieId
)来区分评论的电影,您可以在group by子句中使用该电影。
var averageOfMovieAverages = movieReviewsDataContext
.GroupBy(x => x.Movie.Id)
//.Where(x => x.Count() > 2) if you need this clause
.Select(x => x.Average(m => m.rating))
.Average();
您可以在查询中使用(您也可以直接在查询中执行此操作,但我只是为了可读性而创建了一个变量)。