LINQ にメソッドがあります 基本的に、LINQ クエリが行うことは、データベースからデータを取得することです。
ユーザーは 2 つの日付から選択して、それら 2 つの日付の間のデータを取得できます。しかし、ユーザーがデータのない日付範囲を選択すると、次のエラーが表示されます。
具体化された値が null であるため、値型 'Double' へのキャストが失敗しました。結果の型のジェネリック パラメーターまたはクエリのいずれかで、null 許容型を使用する必要があります
データがなくても、ユーザーが 2 つの日付の間で検索しても問題ないはずです。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();
}
更新: Grade is Double
and Nullable
どんな種類の助けも大歓迎です!
前もって感謝します!