如何检查数据表是否包含任何匹配的行?

时间:2010-08-11 05:51:57

标签: c# asp.net datatable

我正在使用 Compute 来汇总具有条件的数据表。有时,数据表中没有符合我标准的行,所以我在Compute上得到一个例外 无法将对象从DBNull强制转换为其他类型。

有没有办法检查/过滤数据表以查看它是否具有所需的行,如果是,则只应用计算。请指教。

total = Convert.ToDecimal(CompTab.Compute("SUM(Share)", "IsRep=0"));

2 个答案:

答案 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.
   }
}