如何在dataTable中对列进行求和?

cho*_*obo 15 c# vb.net

如何获取数据表中所有列的总和?说我有下表.如何计算"总"行?将总行添加到数据表应该很容易.

         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)


ysr*_*srb 7

试试这个:

            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)


Tim*_*ter 5

我怀疑这就是你想要的,但你的问题有点模糊

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)