如何获取数据表中所有列的总和?说我有下表.如何计算"总"行?将总行添加到数据表应该很容易.
Columns hits uniques sigups, etc...
Rows
1 12 1 23
2 1 0 5
3 6 2 9
total 19 3 37
Run Code Online (Sandbox Code Playgroud)
更新
我最终得到了这个.这是我唯一可以上班的事情.
For Each col As DataColumn In TotalsTable.Columns
If col.DataType.Name = "DateTime" Then
count = count + 1
Continue For
End If
Dim colTotal As Double = 0
Dim value As Double
For Each row As DataRow In TotalsTable.Rows
If Double.TryParse(row(col), value) Then
colTotal += Double.Parse(row(col))
End If
Next
totalRow(count) = colTotal
count = count + 1
Next
Run Code Online (Sandbox Code Playgroud)
Nic*_*las 40
还有一种方法可以使用DataTable.Compute方法在没有循环的情况下执行此操作.以下示例来自该页面.您可以看到使用的代码非常简单:
private void ComputeBySalesSalesID(DataSet dataSet)
{
// Presumes a DataTable named "Orders" that has a column named "Total."
DataTable table;
table = dataSet.Tables["Orders"];
// Declare an object variable.
object sumObject;
sumObject = table.Compute("Sum(Total)", "EmpID = 5");
}
Run Code Online (Sandbox Code Playgroud)
我必须补充一点,如果你不需要过滤结果,你总是可以传递一个空字符串:
sumObject = table.Compute("Sum(Total)", "")
Run Code Online (Sandbox Code Playgroud)
试试这个:
DataTable dt = new DataTable();
int sum = 0;
foreach (DataRow dr in dt.Rows)
{
foreach (DataColumn dc in dt.Columns)
{
sum += (int)dr[dc];
}
}
Run Code Online (Sandbox Code Playgroud)
我怀疑这就是你想要的,但你的问题有点模糊
Dim totalCount As Int32 = DataTable1.Columns.Count * DataTable1.Rows.Count
Run Code Online (Sandbox Code Playgroud)
如果您的所有列都是数字列,您可能需要这样:
您可以使用DataTable.ComputeSum
计算列中的所有值。
Dim totalCount As Double
For Each col As DataColumn In DataTable1.Columns
totalCount += Double.Parse(DataTable1.Compute(String.Format("SUM({0})", col.ColumnName), Nothing).ToString)
Next
Run Code Online (Sandbox Code Playgroud)
编辑问题并添加更多信息后,这应该有效:
Dim totalRow = DataTable1.NewRow
For Each col As DataColumn In DataTable1.Columns
totalRow(col.ColumnName) = Double.Parse(DataTable1.Compute("SUM(" & col.ColumnName & ")", Nothing).ToString)
Next
DataTable1.Rows.Add(totalRow)
Run Code Online (Sandbox Code Playgroud)