错误: - 转换为值类型“Int32”失败,因为具体化值为null

时间:2013-03-28 05:56:12

标签: asp.net-mvc

我有以下查询:

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

但如果没有符合搜索条件的记录,则会引发以下错误

  

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

请帮助

1 个答案:

答案 0 :(得分:2)

防御性编程的基础知识:

  • 首先将Sum()操作的结果分配给可以为空的变量

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

    if(resultOfSum != null)
    {
       int Giver = Convert.ToInt32(resultOfSum);   
    }
    

另外:如果您的Amount字段是Int开头,那么很可能已经给您NULL或有效Int - 我认为不需要调用Convert.ToInt32()

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

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