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个参数…您能给出一个代码示例吗?谢谢。这么简单的解决方案!