我正在使用 Compute 来汇总具有条件的数据表。有时,数据表中没有符合我标准的行,所以我在Compute上得到一个例外 无法将对象从DBNull强制转换为其他类型。
有没有办法检查/过滤数据表以查看它是否具有所需的行,如果是,则只应用计算。请指教。
total = Convert.ToDecimal(CompTab.Compute("SUM(Share)", "IsRep=0"));
答案 0 :(得分:3)
试试这个
object objCompute=CompTab.Compute("SUM(Share)", "IsRep=0");
if(objCompute!=DBNull.Value)
{
total = Convert.ToDecimal(objCompute);
}
答案 1 :(得分:2)
首先,将值赋给一个对象,该对象可以安全地传播并测试空值。
其次,使用TryParse(),如果有可能它不起作用(在这种情况下这可能是过度的......计算功能总是会导致什么都没有,或者可以转换的东西..但我已经键入代码,以便我保留它。这只是一个好习惯。)
object oTotal = CompTab.Compute("Sum(share)", "IsRep=0");
Decimal total;
if(oTotal != null)
{
if(!System.Decimal.TryParse(oTotal.ToString(), out total))
{
// whatever logic you need to include if the TryParse fails.
// Should never happen in this case.
}
}