导致该问题的原因是您没有任何与where
子句逻辑匹配的数据(在本例中ReInstatement
为false
),这意味着返回零结果.
当执行Sum
on on no results时,它将希望使用null
结果,但返回类型Sum
将期望与您的float
类型匹配(因此它失败).
为了能够Sum
在没有结果的情况下,您可以使用DefaultIfEmpty
如下函数,这意味着永远不会有任何null
值Sum
要担心:
var results = _ctx.TestPackages.Where( i => i.LineCheckState && i.TestState && i.Flushing && i.Drying && i.ReInstatement && i.CleaningState); // Sum the results, and in the event of a null value, assign 0f instead. newObj.TotalSizeDone = results.Select(i => i.Size) .DefaultIfEmpty(0f) .Sum();
或者,您可以使用以下内容,以便Sum
知道返回可以为空的类型(然后可以与之合并??
):
newObj.TotalSizeDone = results.Sum(i => (float?)i.Size) ?? 0f;