【问题标题】:How to check whether datatable contains any matched rows?如何检查数据表是否包含任何匹配的行?
【发布时间】:2010-08-11 05:51:57
【问题描述】:

我正在使用 Compute 来总结具有条件的数据表。有时,数据表中没有符合我的条件的行,所以我在 Compute 上遇到异常 对象不能从 DBNull 转换为其他类型。

有没有办法检查/过滤数据表以查看它是否具有所需的行,如果是,那么我会应用 Compute。请指教。

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

【问题讨论】:

    标签: c# asp.net datatable


    【解决方案1】:

    试试这个

    object objCompute=CompTab.Compute("SUM(Share)", "IsRep=0");
    if(objCompute!=DBNull.Value)
    {
    total = Convert.ToDecimal(objCompute);
    }
    

    【讨论】:

      【解决方案2】:

      首先,将值分配给一个对象,该对象可以安全地完成并测试空值。

      其次,如果有可能不起作用,请使用 TryParse() (在这种情况下这可能有点过分了...... Compute 函数总是会产生任何结果,或者可以转换的东西......但我已经输入代码,所以我会保留它。这只是一个好习惯。)

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

      【讨论】:

      • 谢谢大卫。这很有帮助。
      • 嘿,它说'操作员'!不能应用于“对象”类型的操作数。
      • 如果我使用 total = Convert.ToDecimal(dtSum)??0;而不是 tryparse ?
      • 我修复了我的 if 语句。对不起。我应该看到的。
      猜你喜欢
      • 1970-01-01
      • 2019-08-05
      • 1970-01-01
      • 2014-02-18
      • 1970-01-01
      • 2019-09-21
      • 2020-05-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多