Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 错误:-转换为值类型';Int32';由于物化值为null,因此失败_Asp.net Mvc - Fatal编程技术网

Asp.net mvc 错误:-转换为值类型';Int32';由于物化值为null,因此失败

Asp.net mvc 错误:-转换为值类型';Int32';由于物化值为null,因此失败,asp.net-mvc,Asp.net Mvc,我有以下疑问: int? Giver = Convert.ToInt32(db.vwAssignments.Sum(a => a.Amount)); 但是,如果没有与搜索条件匹配的记录,则将引发以下错误 转换为值类型“Int32”失败,因为具体化的值为null。结果类型的泛型参数或查询必须使用可为空的类型 请帮助了解防御性编程的基本知识: 首先将Sum()操作的结果赋给一个可为空的变量 object resultOfSum = db.vwAssignments.Sum(a =>

我有以下疑问:

int? Giver = Convert.ToInt32(db.vwAssignments.Sum(a => a.Amount));
但是,如果没有与搜索条件匹配的记录,则将引发以下错误

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


请帮助了解防御性编程的基本知识:

  • 首先将
    Sum()
    操作的结果赋给一个可为空的变量

    object resultOfSum = db.vwAssignments.Sum(a => a.Amount);
    
  • 检查空值并且仅当它不为null时,然后将其转换为
    INT

    if(resultOfSum != null)
    {
       int Giver = Convert.ToInt32(resultOfSum);   
    }
    
另外:如果您的
Amount
字段一开始是
Int
,很可能这将给您提供空值或有效的
Int
-我认为调用
Convert.ToInt32()
是没有必要的:

int? Giver = db.vwAssignments.Sum(a => a.Amount);

if(Giver.HasValue)
{
   ......
}

是否尝试将值求和为null?当有记录时,工作正常,但如果没有记录,则会引发错误