C# Linq GROUP BY和可为零的长和

C# Linq GROUP BY和可为零的长和,c#,linq,sum,nullable,C#,Linq,Sum,Nullable,这是我的密码: var Summary = ccL3.GroupBy(g => new { g.JOB_BASE_NUM, g.TOP_CUSTOMER_ID, g.TOP_DESCRIPTION }) .Select(g => new Type2

这是我的密码:

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)                       
               })
编辑:这不是重复的。前面的讨论不能直接用于分组讨论

JOB1是可空的long

问题是,如果ccL3中的所有JOB1都为null,则需要SUM_JOB1为null(如果all为null或SUM为0,则返回0)

我搜索了以下主题,但没有讨论linq中GROUP BY中null的和。谁能帮帮我吗。多谢各位

参考:


如果任何项目不为空,则使用
求和
,否则为空

SUM_JOB1 = g.Any(gs => gs.JOB1 != null) ? g.Sum(gs => gs.JOB1) : null        

对您链接的其中一个问题的回答可能会有所帮助:还有这个问题,它是一种扩展方法,可以精确地完成您要查找的内容:。也许您应该仔细阅读您在自己的问题中链接的问题。我如何在我的小组中按代码使用TrueForAll可能存在重复?我试过了,但没有成功。它说iGroup不包含TrueForAll的定义…@MartinParkin我试过让这个扩展工作,写了这个NullableSum,但在group by中,我把JOB1=g.NullableSum(gs=>gs.JOB1)..这只是抛出错误:方法NullableSum没有重载以接受1个参数…您能给出一个代码示例吗?谢谢。这么简单的解决方案!