Linq GROUP BY和SUM可为空长

时间:2018-12-21 20:23:38

标签: 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
               {                       
                   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为null,则我需要SUM_JOB1为null(如果all为null或总和为0,则返回0)。

我搜索了以下主题,但是在linq的GROUP BY中没有讨论null的总和。有谁可以帮助我吗。谢谢。

参考: handle null in linq sum

Linq query with nullable sum

Force linq sum to return null

1 个答案:

答案 0 :(得分:1)

如果任何项目不为空,则使用SELECT p.ProductRecipeID, c1.PricingID AS Component1, c2.PricingID AS Component2, c3.PricingID AS Component3, c4.PricingID AS Component4 FROM #ProductRecipe p LEFT JOIN #ComponentPricing c1 ON p.Component1 = c1.ProductID LEFT JOIN #ComponentPricing c2 ON p.Component2 = c2.ProductID LEFT JOIN #ComponentPricing c3 ON p.Component3 = c3.ProductID LEFT JOIN #ComponentPricing c4 ON p.Component4 = c4.ProductID ,否则为空

Sum