首页 > 解决方案 > 试图除以零 Linq

问题描述

我正在尝试根据列的总和以及有多少来计算平均值。

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

(reviews.Where(w => w.MovieID == m.MovieID).Sum(o => o.MovieRating)) / reviews.Where(z => z.MovieID == m.MovieID).Count();

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

标签: c#linq

解决方案


使用内置Average函数的 LINQ 怎么样?

reviews
    .Where(z => z.MovieID == m.MovieID)
    .Select(z => z.MovieRating)
    .DefaultIfEmpty(0)
    .Average()

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

reviews
    .Where(z => z.MovieID == m.MovieID)
    .Average(z => (decimal?)z.MovieRating) ?? 0

推荐阅读