【发布时间】:2018-12-21 20:23:38
【问题描述】:
这是我的代码:
var Summary = ccL3.GroupBy(g => new
{
g.JOB_BASE_NUM,
g.TOP_CUSTOMER_ID,
g.TOP_DESCRIPTION
})
.Select(g => new Type2
{
JOB_BASE_NUM = g.Key.JOB_BASE_NUM,
TOP_CUSTOMER_ID = g.Key.TOP_CUSTOMER_ID,
TOP_DESCRIPTION = g.Key.TOP_DESCRIPTION,
SUM_JOB1 = g.Sum(gs => gs.JOB1)
})
编辑:这不是重复的。前面的讨论不能直接用在 GROUP BY 中。
JOB1 可以长空。
问题是,如果 ccL3 中的所有 JOB1 为空,我需要 SUM_JOB1 为空(如果全部为空或总和为 0,则返回 0)。
我搜索了以下主题,但在linq中没有讨论GROUP BY中null的SUM。有人能帮助我吗。谢谢。
【问题讨论】:
-
对您链接的其中一个问题的回答可能会有所帮助:stackoverflow.com/a/43537187/2169762
-
还有这个,它是一种扩展方法,可以完全满足您的需求:stackoverflow.com/a/43537671/2169762。也许您应该彻底查看您在自己的问题中链接的问题。
-
如何通过代码在我的组中使用 TrueForAll?我试过没有成功。它说 IGrouping
不包含 TrueForAll 的定义... -
@MartinParkin 我试图让这个扩展工作,写了这个 NullableSum 但在 group by 中,我把 JOB1= g.NullableSum(gs => gs.JOB1)....只是抛出错误:方法 NullableSum 没有重载以进行 1 次争论....你能举一个代码示例吗?