gpt4 book ai didi

c# - Linq 与 sum 和可为空的 int

转载 作者:行者123 更新时间:2023-12-02 22:28:35 24 4
gpt4 key购买 nike

我正在尝试使用 Linq 计算可空 int 的总和。我的查询如下所示:

int? surveysPromotersFromChatsGroup = (from surveyResult in surveyResultsFromChats
where surveyResult.FirstScoreNPS.HasValue && surveyResult.GroupID == gr && surveyResult.FirstScoreNPS >= 9
select surveyResult.FirstScoreNPS).Sum();

FirstScoreNPs 字段是一个可为空的整数。我的问题是总和总是返回 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);

但我得到一个异常“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 };

我的模型中的 FirstScoreNPS 是一个 Nullable int。

最佳答案

你可以试试

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

关于c# - Linq 与 sum 和可为空的 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12623555/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com