DataTable中的总列数增加了一倍

时间:2015-03-12 00:31:44

标签: c# asp.net

我从SQL Server中提取数据,在C#中我添加了一列Total和行的总和。但是,我的专栏不断加倍,我正在使用的代码是:

        DataSet ds = new DataSet();
        ad.Fill(ds);
        ds.Tables[0].Columns.Add("Total",typeof(int));

        for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
        {
            ds.Tables[0].Rows[i][ds.Tables[0].Columns.Count - 1] = "0";

            for (int j = 1; j < ds.Tables[0].Columns.Count; j++)
            {
               int Value = Convert.ToInt32(ds.Tables[0].Rows[i][ds.Tables[0].Columns.Count - 1]);
               ds.Tables[0].Rows[i][ds.Tables[0].Columns.Count - 1] = Value + Convert.ToInt32(ds.Tables[0].Rows[i][j]);
            }
        }

我的结果的一个例子是:

Products ColA ColB ColC Total
ProdA      5    2    0    14
ProdB      0    0    0    0
ProdC      2    2    3    14
ProdD      1    0    1    4

我在C#循环中做错了什么?谢谢

1 个答案:

答案 0 :(得分:1)

代码评论在这里有点皱眉。但是,我认为你的问题是第二个for循环。在每一行的末尾,您将总列与自身相加。也许它应该是:

for (int j = 1; j < ds.Tables[0].Columns.Count - 1; j++)

注意结束循环的条件中的 -1 位。另外,我猜你是故意排除第一列,否则应该开始j = 0