Linqを使用してnull許容整数の合計を計算しようとしています。私のクエリは次のようになります。
int? surveysPromotersFromChatsGroup = (from surveyResult in surveyResultsFromChats
where surveyResult.FirstScoreNPS.HasValue && surveyResult.GroupID == gr && surveyResult.FirstScoreNPS >= 9
select surveyResult.FirstScoreNPS).Sum();
FirstScoreNPsフィールドはnull許容整数です。私の問題は、何があっても合計が常にnullを返すことです。この背後にある論理がわかりません。確認したところ、一部のエンティティにはそのフィールドに値があり、sumメソッドはそれらの値を合計する必要があることを確認しました。
私が試した別のアプローチは次のようなものです。
int surveysPromotersFromChatsGroup = (from surveyResult in surveyResultsFromChats
where surveyResult.FirstScoreNPS.HasValue && surveyResult.GroupID == gr && surveyResult.FirstScoreNPS >= 9
select surveyResult.FirstScoreNPS).Sum(score => score.Value);
しかし、「linqnull値をタイプのメンバーに割り当てることはできません」という例外が発生します。
linqを使用して、そのフィールドのnull以外の値を合計する方法はありませんか?
SurveyResultsFromChatは、実際には別のクエリからのものです。
var surveyResultsFromChats = from surveyResult in db.SurveyResults
join survey in db.Surveys on surveyResult.SurveyID equals survey.SurveyID
join userGroup in db.UserGroupMaps on surveyResult.UserID equals userGroup.UserID
where surveyResult.CreatedDate >= startDate && surveyResult.CreatedDate <= endDate && surveyResult.UserID.HasValue && surveyResult.ChatSessionID.HasValue
select new { surveyResult.ResultID, survey.BrandID, userGroup.GroupID, surveyResult.CompletedDate, surveyResult.FirstScoreNPS };
私のモデルのFirstScoreNPSはNullableintです。