C# 数据表计算时,对象不能从DBNull转换为其他类型

C# 数据表计算时,对象不能从DBNull转换为其他类型,c#,C#,我想对包含筛选器的数据表列求和。我正在使用以下代码: object sumTotal; sumTotal = dt.Compute("Sum(Total)", "[emp Id]=5"); 但是我的数据库中没有empId值5,因此dt.compute()不起作用。它显示了一个错误: 错误消息:无法将对象从DBNull强制转换为其他类型 有没有任何方法,如果在我的数据库中找不到5的empId,那么它会给出一个0的结果,否则就是总和?对DataTable的简单调用。Compute无法给出该错误。如

我想对包含筛选器的数据表列求和。我正在使用以下代码:

object sumTotal;
sumTotal = dt.Compute("Sum(Total)", "[emp Id]=5");
但是我的数据库中没有
empId
5
,因此
dt.compute()
不起作用。它显示了一个错误:

错误消息:无法将对象从DBNull强制转换为其他类型


有没有任何方法,如果在我的数据库中找不到
5
empId
,那么它会给出一个
0
的结果,否则就是总和?

对DataTable的简单调用。Compute无法给出该错误。如果没有值为5的EmpID,则该调用的返回值为DbNull.value

当然,此时,如果您尝试将结果转换为其他类型或强制转换,则可能会收到该错误消息。
您可以避免在添加对返回值的检查时出现问题

// Example for an int value returned by Compute
object sumTotal= dt.Compute("Sum(Total)", "[Emp ID] = 5");
int total = (sumTotal == DBNull.Value ? 0 : (int)result);
Console.WriteLine(total);

我的数据库有3列。Id、薪资和空类型。如果员工类型为“A”,我想用dt.compute方法计算工资总额。但我的数据库没有任何“A”类员工的记录。所以我得到了错误。如果没有员工类型“A”的记录,我希望结果总和返回为0,否则显示员工类型“A”的总工资。是否在上述两行之一引发异常?还是在以后的线路上?