我有以下查询:
int? Giver = Convert.ToInt32(db.vwAssignments.Sum(a => a.Amount));
但如果没有符合搜索条件的记录,则会引发以下错误
转换为值类型“Int32”失败,因为具体化值为空。结果类型的泛型参数或查询必须使用可为空的类型。
请帮忙
我有以下查询:
int? Giver = Convert.ToInt32(db.vwAssignments.Sum(a => a.Amount));
但如果没有符合搜索条件的记录,则会引发以下错误
转换为值类型“Int32”失败,因为具体化值为空。结果类型的泛型参数或查询必须使用可为空的类型。
请帮忙
防御性编程的基础知识:
首先将您的Sum()
操作结果分配给一个可为空的变量
object resultOfSum = db.vwAssignments.Sum(a => a.Amount);
检查NULL!并且仅当它不为空时,才将其转换为INT
if(resultOfSum != null)
{
int Giver = Convert.ToInt32(resultOfSum);
}
另外:如果您的Amount
字段是一Int
开始的,很可能这已经给您 NULL 或有效Int
- 我认为调用 toConvert.ToInt32()
是不必要的:
int? Giver = db.vwAssignments.Sum(a => a.Amount);
if(Giver.HasValue)
{
......
}