c# - 试图除以零 Linq
问题描述
我正在尝试根据列的总和以及有多少来计算平均值。
每部电影都可以有一个电影评级,我试图将电影评级加在一起,然后将它们除以收视率,以获得一部电影的平均收视率。
(reviews.Where(w => w.MovieID == m.MovieID).Sum(o => o.MovieRating)) / reviews.Where(z => z.MovieID == m.MovieID).Count();
但问题是如果计数为 0。我能做些什么呢?
解决方案
使用内置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
推荐阅读
- ag-grid-react - Ag-grid 上下文菜单图标
- sql - SQL1109N 数据库管理器未能为 DB2 DSN 装入 gsk8ssl_64.dll SQLSTATE=42724
- anchor - 谷歌标签管理器打破标签上的下载属性
- javascript - 如何在文本中插入“,” [php]
- json - Laravel Vue SPA:如何从 Laravel 正确检索 json 对象并将其打印出来?
- apache-beam - 知道在 apache Beam 直接运行器中运行的线程数
- python - 使用 django rest 框架有效地在数据库中保存 60K 记录
- text-classification - fasttext 监督学习中的 args wordNgrams、minn 和 maxn 有什么区别?
- flutter - 如何在 Draggable 中获得滑动方向?
- r - ggplotly- 绘图标题与图形重叠