转换为值类型"Int32"失败,因为实现值为null.

joh*_* Gu 5 c# asp.net asp.net-mvc-4

我有以下代码insdie我的asp.net mvc web应用程序: -

SystemInformation s = new SystemInformation()
            {
AssetCount = new AssetCount() {

                CustomerCount = entities.AccountDefinitions == null ? 0 : entities.AccountDefinitions.Count(),
                RackCount = tms.TMSRacks == null ? 0 : tms.TMSRacks.Count(),
                ServerCount = tms.TMSServers == null ? 0 : tms.TMSServers.Count(),
                CustomCount = tms.CustomAssets==null? 0 : tms.CustomAssets.Sum(a => a.Quantity)

            },
Run Code Online (Sandbox Code Playgroud)

但是目前如果任何Enumerable为空,我将收到以下错误: -

转换为值类型"Int32"失败,因为实现值为null.结果类型的泛型参数或查询必须使用可空类型.

Mag*_*nus 8

问题可能是tms.CustomAssets集合是空的.要修改如下所示的内容:

var tmpCustomCount = tms.CustomAssets.Sum(a => (int?)a.Quantity);

...
AssetCount = new AssetCount() 
{
...
   CustomCount = tmpCustomCount ?? 0
}
Run Code Online (Sandbox Code Playgroud)