Sim*_*eep 14 linq nullable sum
我有一个看起来像这样的LINQ查询...
var duration = Level3Data.AsQueryable().Sum(d => d.DurationMonths);
Run Code Online (Sandbox Code Playgroud)
如果所有d.DurationMonths值都为null,则Sum返回0.null如果全部d.DurationMonths是,我怎么能让Sum返回null?或者我是否需要首先运行单独的查询以在执行总和之前消除这种情况?
Sco*_*vey 11
与之前的扩展方法建议一起 - 您可以使用三元运算符...
var duration = Level3Data.AsQueryable().Any(d => d.DurationMonths.HasValue)
? Level3Data.AsQueryable().Sum(d => d.DurationMonths)
: null;
Run Code Online (Sandbox Code Playgroud)
您可以使用Aggregate提供自定义聚合代码:
var items = Level3Data.AsQueryable();
var duration = items.Aggregate<D,int?>(null, (s, d) => (s == null) ? d.DurationMonths : s + (d.DurationMonths ?? 0));
Run Code Online (Sandbox Code Playgroud)
(假设物品Level3Data属于类型D)