Sum DataTable列

时间:2014-02-24 10:19:16

标签: c#

尝试对我已设置的DataTable中的每一列进行求和。数据表中的前2列包含文本,其余列包含我想要求和的数值。

我收到一个错误,说17号位没有排。

当我向下滚动DataTable查看器时,您可以看到17处没有行,并且无法看到为什么foreach正在击中此行。 enter image description here

我有以下代码

for (int i = 2; i < DT.Columns.Count; i++)
{
    foreach (DataRow DR in DT.Rows)
    {
        ColumnTotal = ColumnTotal + int.Parse(DR[i].ToString());
    }
    DT.Rows[DT.Rows.Count + 1][i] = ColumnTotal;
    ColumnTotal = 0;
}

任何人都可以告诉我我做错了什么以及如何改进它。

由于

3 个答案:

答案 0 :(得分:2)

您正尝试在17-th行中进行分配,但它不存在。首先创建它,然后像下面一样填充它:

var row = DT.NewRow();
for (int i = 2; i < DT.Columns.Count; i++)
{
    ColumnTotal = 0;
    foreach (DataRow DR in DT.Rows)
    {
        ColumnTotal = ColumnTotal + int.Parse(DR[i].ToString());
    }
    row[i] = ColumnTotal;
}
DT.Rows.Add(row);

答案 1 :(得分:1)

您无法像这样设置行

DT.Rows[DT.Rows.Count + 1][i] = ColumnTotal;

因为它没有第17行,您可能需要添加新行。

做类似的事情,

DataRow newRow = DT.NewRow();

for (int i = 2; i < DT.Columns.Count; i++)
{
    foreach (DataRow DR in DT.Rows)
    {
        ColumnTotal = ColumnTotal + int.Parse(DR[i].ToString());
    }

    newRow[i] = ColumnTotal;

    ColumnTotal = 0;
}

DT.Rows.Add(newRow);

答案 2 :(得分:0)

简单的亲爱的朋友

Datatable Dt=new DataTable();
Dt.Columns.Add("Name");
Dt.Columns.Add("Amount");
Dt.Columns.Add("Id");
Dt.Rows.Add("Harsh","100", "1");
Dt.Rows.Add("Miller","200", "2");

现在计算使用这个

object Sum = Dt.Compute(" SUM(Amount) ","");
double NetTotal = Double.Parse(Sum.ToString());