转换为值类型“Int32”失败,因为实现值为null。

时间:2014-01-07 16:45:40

标签: 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)

            },

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

  

转换为值类型'Int32'失败,因为具体化值   一片空白。结果类型的泛型参数或查询必须   使用可空类型。

1 个答案:

答案 0 :(得分:8)

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

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

...
AssetCount = new AssetCount() 
{
...
   CustomCount = tmpCustomCount ?? 0
}