我们说我有一个Linq查询:
var query = from course in _unitOfWork.Course.GetAll()
join candidate in _unitOfWork.CandidateCourses.GetAll() on course.Id equals candidate.Course_id join cr in _unitOfWork.CourseReviews.GetAll() on course.Id equals cr.Course_id into g from rt in g.DefaultIfEmpty()
where candidate.UserId == CandidateId
select new CourseFields { Id = course.Id,
Course_name = course.Course_name,
Course_description = course.Course_description,
Rating = g.Average(x => x.Rating),
TotalSections = sections.Count(), };
这里我在计算平均评分时遇到异常,当表格中没有该特定课程的数据时。
有人可以帮助我做错了吗?
答案 0 :(得分:0)
Average
需要列表中的一个元素。
如果没有元素,您可以添加DefaultIfEmpty
来设置默认评级。
...
Rating = g.DefaultIfEmpty(0).Average(x => x.Rating),
...
如果您的评分为Nullable
类型(例如Nullable<double>>
)
然后它不会抛出异常,而是重新启动null
而不是
答案 1 :(得分:0)
你也可以试试这个。在做一个平均值之前检查null ...
Rating = (g!=null && g.Count()>0)?g.Average(x => x.Rating):0,
...