【问题标题】:C# Multiple columns individual column sum as a DataRowC# 多列单列总和作为 DataRow
【发布时间】:2020-04-02 13:50:40
【问题描述】:

我有一个包含 4 列 A、B、C、D 的 DataTable,其中 4 行数据都包含整数值。我想返回一个包含单个 A 的总和的 A、B、C、D 列的 DataRow, B、C、D 列的值。没有过滤器,就像在 excel 中一样直接总计。

DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[4] { 
                            new DataColumn("A", typeof(int)),
                            new DataColumn("B", typeof(int)),
                            new DataColumn("C", typeof(int)),
                            new DataColumn("D", typeof(int)) 
                        });
dt.Rows.Add(1,1,1,1);
dt.Rows.Add(2,2,2,2);
dt.Rows.Add(3,3,3,3);
dt.Rows.Add(4,4,4,4);

输出数据行必须包含 10,10,10,10 个值的 4 列

【问题讨论】:

    标签: c# datatable sum datarow datacolumn


    【解决方案1】:

    如果你想要一个列(比如 Total),其中包含每行的 A、B、C、D 之和,请添加一个计算列,如下所示,

    DataTable dt = new DataTable();
    dt.Columns.AddRange(new DataColumn[] {
                    new DataColumn("A", typeof(int)),
                    new DataColumn("B", typeof(int)),
                    new DataColumn("C", typeof(int)),
                    new DataColumn("D", typeof(int)),
                    // add computed column in case you want to get sum of each row in a separate column
                    new DataColumn("Total", typeof(int),"A+B+C+D")
                });
    dt.Rows.Add(1, 1, 1, 1);
    dt.Rows.Add(2, 2, 2, 2);
    dt.Rows.Add(3, 3, 3, 3);
    dt.Rows.Add(4, 4, 4, 4);
    

    如果您想要 4 个变量(或其他)中每列的总和,请使用 DataTable.Compute 方法,如下所示,

    //use DataTable.Compute to calculate sum or each column
    var sumA = dt.Compute("SUM(A)", "");
    var sumB = dt.Compute("SUM(B)", "");
    var sumC = dt.Compute("SUM(C)", "");
    var sumD = dt.Compute("SUM(D)", "");
    

    //since you want these added as new row in the datatable...
    dt.Rows.Add(sumA, sumB, sumC, sumD);
    

    【讨论】:

    • 我已经明确提到我需要一个包含 4 列 ech 的 DataRow,其中包含上列中值的总和。
    • 在这种情况下,只需将 sumA...sumD 放在数据表的新行中。我刚刚编辑了我的答案以显示相同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多