我有以下查询:
int? Giver = Convert.ToInt32(db.vwAssignments.Sum(a => a.Amount));
但如果没有符合搜索条件的记录,则会引发以下错误
转换为值类型'Int32'失败,因为具体化值为null。结果类型的泛型参数或查询必须使用可空类型。
请帮助
答案 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)
{
......
}