只能是操作数据表(DataTable)
假如DataTable有一列是Number,可以写如下的语句
decimal sum = (decimal)dt.Compute( "SUM(Number)","") ;

解决方案 »

  1.   

    也可以用数据行数组
    先定义一个数据行数组DataRow[] dr
    然后:
    for(int i=0;i<dr.Length;i++)
    {
      int sum=0;
      sum+=dr[i][idnum];
    }
      

  2.   

    srooy,错了一点点
    for(int i=0;i<dr.Length;i++)
    {
      int sum=0;
      sum+=dr[i]["idnum"];
    }
      

  3.   

    在运行时出现以下错误
    InvalidCastException: 指定的转换无效但我跟踪是看到sum值为0,可能是什么原因造成的呢?
      

  4.   

    补充:
    前提条件需要DataTable,比如说DataTable为DT。
    dr=DT.Select();
      

  5.   

    OneDotRed() 的回答好象更简化些,但是还没调通
      

  6.   

    yaopeng117的代码可以实现,但是还是有点小错误要纠正,最后代码如下:
    其中fyxxzllb11为数据集,tx_cdmc为表
    ------------------------------------------------
    DataRow[] dr;
    int sum=0;
    dr=fyxxzllb11.tx_cdmc.Select();
    for(int i=0;i<dr.Length;i++)
    {
       sum+=(int)dr[i]["idnum"];
    }
    ------------------------------------------------
      

  7.   

    等待 OneDotRed() 方法的调通,能不能再提示一下?
      

  8.   

    首先需要检查SUM的值是否为DBNull,如果该列没有数据,得到的值是DBNull.Value.
                object obj = dt.Compute("SUM(Number)", "");
                if (obj != DBNull.Value )
                {
                    decimal sum = (decimal)dt.Compute("SUM(Number)", "");
                }
      

  9.   

    我试过了,还是一样的问题,而且我所统计的表中没有值为NULL的列。
    真不知道问题出在哪里。
      

  10.   

    怪事啊,你在把这段代码贴到console程序里看看DataTable dt = new DataTable();
    dt.Columns.Add( "Number" , typeof( decimal ) );DataRow dr = dt.NewRow();
    dr[ 0 ] = 100 ;
    dt.Rows.Add( dr );dr = dt.NewRow();
    dr[ 0 ] = 19.6;
    dt.Rows.Add( dr );
    object obj = dt.Compute("SUM(Number)", "");
    if (obj != DBNull.Value )
    {
        decimal sum = (decimal)dt.Compute("SUM(Number)", "");
    }
    ==============
    出现问题的原因是否因为DataTable列的数据类型不是decimal??
      

  11.   

    那应该是个int的字段,是一个通过SQL查询后统计得出的列,SQL语句如下:SELECT cdlb.id, COUNT(cdmc.id) AS zlidnum FROM cdmc RIGHT OUTER JOIN cdlb ON cdmc.lbid = cdlb.id GROUP BY cdlb.id ORDER BY cdlb.id DESC其中zlidnum是我想查询后求和的列