首页 > 解决方案 > 数据表计算时,对象不能从 DBNull 转换为其他类型

问题描述

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

object sumTotal;
sumTotal = dt.Compute("Sum(Total)", "[emp Id]=5");

但是我的数据库中没有empId5,所以dt.compute()不工作。它显示一个错误:

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

是否有任何方法如果在我的数据库中找不到 of ,那么它给出的结果是empId,否则是总和?50

标签: c#

解决方案


对 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);

推荐阅读