试图将Linq除以零

san*_*der 3 c# linq

我试图根据列的总和以及有多少列来计算平均值.

每部电影都可以有一个电影,我试图将电影放在一起,然后将它们除以收视率以获得电影的平均评分.

(reviews.Where(w => w.MovieID == m.MovieID).Sum(o => o.MovieRating)) / reviews.Where(z => z.MovieID == m.MovieID).Count();
Run Code Online (Sandbox Code Playgroud)

但问题是,如果计数为0.我能做些什么呢?

pau*_*aul 7

如何使用LINQ内置Average函数?

reviews
    .Where(z => z.MovieID == m.MovieID)
    .Select(z => z.MovieRating)
    .DefaultIfEmpty(0)
    .Average()
Run Code Online (Sandbox Code Playgroud)

让查询在服务器上完全运行(我猜,在您的数据库服务器上):

reviews
    .Where(z => z.MovieID == m.MovieID)
    .Average(z => (decimal?)z.MovieRating) ?? 0
Run Code Online (Sandbox Code Playgroud)


Tim*_*ter 5

你可以用

var ratingList = reviews
   .Where(z => z.MovieID == m.MovieID)
   .Select(z => z.MovieRating)
   .ToList();
if(ratingList.Count > 0)
{
   double result = ratingList.Sum() / ratingList.Count;
}
Run Code Online (Sandbox Code Playgroud)

  • 是否有可能在单一的往返,完全SQL方面(没有下载评论的lsit),如果`reviews`是EF上的表? (2认同)