我的 LINQ 中有一个方法 基本上我的 LINQ 查询所做的是它从我的数据库中检索数据。
用户可以在两个日期之间进行选择并检索这两个日期之间的数据。但是,如果用户选择没有数据的日期范围,我会收到此错误:
转换为值类型“Double”失败,因为具体化值为 null。结果类型的泛型参数或查询必须使用可为空的类型
即使没有数据,用户也应该可以在两个日期之间进行搜索,它应该给出一条错误消息,指出这些日期之间没有数据,而不是我在 Visual Studio 中收到的这个错误。我首先使用 MVC 实体框架模型。
这是方法:
public List<CoreValueAndAverageGrade> GetAverageGradeForAllCoreValues(
OfficeStatisticQueryViewModel model)
{
var StartDate = DateTime.Parse(model.StartDate);
var EndDate = DateTime.Parse(model.EndDate);
return db.CoreValue
.Where(v => v.CoreValueQuestion
.Any(q => !q.SubjectType.Ignored_Statistic))
.Select(coreValue => new CoreValueAndAverageGrade
{
CoreValue = coreValue,
AverageGrade = coreValue.CoreValueQuestion
.Where(q => !q.SubjectType.Ignored_Statistic)
.Average(q => q.SelectedQuestions
.Where(s =>
s.GoalCardQuestionAnswer != null
&& s.GoalCardQuestionAnswer.Grade.HasValue
&& s.GoalCard.Completed_Date >= StartDate
&& s.GoalCard.Completed_Date <= EndDate
)
.Average(s => s.GoalCardQuestionAnswer.Grade.Value))
})
.ToList();
}
更新:等级是Double
和可空的
非常感谢任何形式的帮助!
提前致谢!