尝试对我已设置的DataTable中的每一列进行求和。数据表中的前2列包含文本,其余列包含我想要求和的数值。
我收到一个错误,说17号位没有排。
当我向下滚动DataTable查看器时,您可以看到17处没有行,并且无法看到为什么foreach正在击中此行。
我有以下代码
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;
}
任何人都可以告诉我我做错了什么以及如何改进它。
由于
答案 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());