首页 > 解决方案 > 如何在数据表中按列名添加新行

问题描述

我尝试在为列中每个单元格的平均值计算的列的页脚中添加新行。

原始数据表:

 col1 | col2 | col3 | ... | col20 |
------|------|------|-----|-------|
  5   |  10  |  5   | ... |   8   |
------|------|------|-----|-------|
  8   |   7  |  8   | ... |   2   |

我想在下面做:

  col1 | col2 | col3 | ... | col20 |
 ------|------|------|-----|-------|
   5   |  10  |  5   | ... |   8   |
 ------|------|------|-----|-------|
   8   |   7  |  8   | ... |   2   |
-------|------|------|-----|-------|
  6.5  |  8.5 | 6.5  | ... |   5   |

这是我的代码:

    if(sum[i] == 0 )
    {
       dt.Columns.Remove("BIN"+i.ToString()+"");
    }
    else
    {
       dt.Columns.Add("%BIN"+i.ToString()+"", typeof(decimal),"(BIN"+i.ToString()+" / 
       [In System])*100");
       if (i == 1)
       {
         dt.Columns.Add("100-%BIN1", typeof(double), "100 -[%BIN1]");
         Avg[i] = Convert.ToDouble(dt.Compute("Avg([col"+i.Tostring()+"])", string.Empty));
       }
       else
       {
         Avg[i] = Convert.ToDouble(dt.Compute("Avg([col" + i.ToString() + "])", string.Empty)); 
       }
       dt.Rows.Add("Avg_xbar"+i.ToString()+"", Avg[i]);
   }

从我上面的代码中,结果有一个问题如下:

    col1   | col2 | col3 | ... | col20 |
-----------|------|------|-----|-------|
     5     |  10  |  5   | ... |   8   |
-----------|------|------|-----|-------|
    8      |   7  |  8   | ... |   2   |
-----------|------|------|-----|-------|
Avg_xbar1  | 6.5  |      |     |       |
-----------|------|------|-----|-------|
Avg_xbar2  | 8.5  |      |     |       |
-----------|------|------|-----|-------|
Avg_xbar3  | 6.5  |      |     |       |
-----------|------|------|-----|-------|
   ...     | ...  |      |     |       |
-----------|------|------|-----|-------|
Avg_xbar20 |  5   |      |     |       |

标签: c#datatableaverage

解决方案


我假设您已经让该代码在每一列的循环中运行。您需要将添加的行移到此循环之外。

for (var i = 0; i < columns.length; i++) {
  // existing looping logic
}
dt.Rows.Add(Avg);

推荐阅读