C# 具有可为null int的和的Linq

C# 具有可为null int的和的Linq,c#,.net,linq,C#,.net,Linq,我试图用Linq计算一个可为null的int的和。我的查询如下所示: int? surveysPromotersFromChatsGroup = (from surveyResult in surveyResultsFromChats where surveyResult.FirstScoreNPS.HasValue && surveyResult.GroupID == gr &&am

我试图用Linq计算一个可为null的int的和。我的查询如下所示:

int? surveysPromotersFromChatsGroup = (from surveyResult in surveyResultsFromChats
                                            where surveyResult.FirstScoreNPS.HasValue && surveyResult.GroupID == gr && surveyResult.FirstScoreNPS >= 9
                                            select surveyResult.FirstScoreNPS).Sum();
int surveysPromotersFromChatsGroup = (from surveyResult in surveyResultsFromChats
                                      where surveyResult.FirstScoreNPS.HasValue && surveyResult.GroupID == gr && surveyResult.FirstScoreNPS >= 9
                                      select surveyResult.FirstScoreNPS).Sum(score => score.Value);
FirstScoreNPs字段是一个可为null的int。我的问题是,无论发生什么情况,总和总是返回null。我看不出这背后的逻辑。我检查过了,我确定有些实体在该字段中有值,sum方法应该对这些值求和

我尝试的另一种方法是:

int? surveysPromotersFromChatsGroup = (from surveyResult in surveyResultsFromChats
                                            where surveyResult.FirstScoreNPS.HasValue && surveyResult.GroupID == gr && surveyResult.FirstScoreNPS >= 9
                                            select surveyResult.FirstScoreNPS).Sum();
int surveysPromotersFromChatsGroup = (from surveyResult in surveyResultsFromChats
                                      where surveyResult.FirstScoreNPS.HasValue && surveyResult.GroupID == gr && surveyResult.FirstScoreNPS >= 9
                                      select surveyResult.FirstScoreNPS).Sum(score => score.Value);
但我得到一个异常“linq不能将空值分配给类型为的成员”

是否有一种方法可以使用linq汇总该字段中的非空值

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 };
var SurveyResults fromchats=来自数据库中的surveyResult.SurveyResults
在db中加入测量。测量上的测量结果。测量ID等于测量。测量ID
在surveyResult.UserID等于userGroup.UserID的db.UserGroupMaps中加入userGroup
其中surveyResult.CreatedDate>=startDate&&surveyResult.CreatedDate您可以尝试

(from surveyResult in
 surveyResultsFromChats
where surveyResult.FirstScoreNPS.HasValue && surveyResult.GroupID == gr && 
surveyResult.FirstScoreNPS >= 9
   select surveyResult.FirstScoreNPS).
Select(score => score.Value ?? 0).Sum();

考虑使用FixStalpPs.GETValueOrreDebug()代替LINQ Queice中的“FrestSalpNPS”,LINQ类型是哪种?数据库实体?我使用Linq到sql。导致该问题的字段是int?这是一个可为null的int。我尝试过类似的查询,但没有sum,只需count,它就可以工作,所以我猜sum方法就是问题所在。我也有类似的问题,并使用GetValueOrDefault()解决它正如@GlennFerrieLive所写,
中的
FirstScoreNPS.HasValue
应该已经屏蔽了
score
中的所有
null
值,因此所有
score.Value
s都将非null。@dasblinkenlight-不确定这里的问题所在的模型