日期:2014-05-19  浏览次数:20807 次

关于DataTable的列求和的问题
现在我这里拼出一个DataTable,列名是从数据库取出来的变量(列名不知道),要求每一列的和如何做?  
我用DataTable.Compute好像不行

------解决方案--------------------
for(int i = 0; i < datatable1.Rows.Count; i ++)
{
sumCol1 += convert.ToInt32(datatable1.Rows[i][0]); //第一列
sumCol2 += convert.ToInt32(datatable1.Rows[i][1]); //第二列
sumCol3 += convert.ToInt32(datatable1.Rows[i][1]);
……
}
如果其中某个数据有误,可能会引发异常,注意加判断.
------解决方案--------------------
NameDoubleCollection colSum = new NameDoubleCollection();
foreach (DataColumn col in Td.Dt.Columns) {
foreach (DataRow row in Td.Dt.Rows) {
colSum[col.ColumnName] += (double)row[col.ColumnName];
}
}

这样把每一列的和都保存在一个集合里了,访问这个集合就可以的

------解决方案--------------------
思路就是外循环每一列:j=0;j <datatable1.colums.count;j++
内循环行:i=0;i <datatable1.rows.count;i++
求和:sum += convert.ToInt32(datatable1.Rows[i][j]);
------解决方案--------------------

int[] sumCol;
for(int j = 0; j < datatable1.Columns.Count;j++)
{
for(int i = 0; i < datatable1.Rows.Count; i ++)
{
sumCol[j] += convert.ToInt32(datatable1.Rows[i][j]);
}
}