2010-08-11 72 views
2

我正在使用计算用于总结具有条件的数据表。有时,数据表中没有符合我的条件的行,所以我在计算上遇到异常 对象无法从DBNull转换为其他类型。如何检查datatable是否包含任何匹配的行?

有没有一种方法来检查/筛选数据表,看它是否具有所需的行,如果是只有我申请计算。请指教。

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

回答

3

试试这个

object objCompute=CompTab.Compute("SUM(Share)", "IsRep=0"); 
if(objCompute!=DBNull.Value) 
{ 
total = Convert.ToDecimal(objCompute); 
} 
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. 
    } 
} 
+0

谢谢大卫。这非常有帮助。 – 2010-08-11 05:59:21

+0

嘿它说'操作员'!'不能应用于'object'类型的操作数。 – 2010-08-11 06:07:38

+0

如果我使用总= Convert.ToDecimal(dtSum)δλ0;而不是tryparse? – 2010-08-11 06:17:50

相关问题