在datatable中的特定列下添加一行

时间:2013-10-11 09:57:59

标签: c# sql-server asp.net-mvc c#-4.0 datatable

我使用以下代码将sql表值加载到数据表中

        DataTable dt = new DataTable();
        SqlConnection con = new SqlConnection("Connection String Here");
        con.Open();
        SqlCommand cmd = new SqlCommand("select * from ExportExcel", con);
        dt.Load(cmd.ExecuteReader());
        int total = 0;
        foreach (DataRow row in dt.Rows)
        {
            int salaryvalue = Convert.ToInt32(row["Salary"]);
            total = salaryvalue + total;
        }

        dt.Rows.Add("Salary");
        dt.Rows.Add(total);

我动态地添加了Salary。但是它在第一列中逐个显示。

enter image description here

但是我需要在部门专栏中获得薪水,在工资栏中需要总额。如何做到这一点? enter image description here

5 个答案:

答案 0 :(得分:4)

你可以使用

     dt.rows.add(new object[]{"","Salary",total });

您可以使用Datatable.Compute Method

,而不是计算总计
     object total;
      total= dt.Compute("Sum(Salary)", "");

答案 1 :(得分:0)

你应该在foreach循环后写这样的文字,

DataRow drNew=dt.NewRow();
drNew[0]="";
drNew[1]="Salary";
dtNew[2]=total;
dt.Rows.Add(drNew);

希望这有帮助

答案 2 :(得分:0)

您实际上只想添加一行,所以只需添加一行。

dt.Rows.Add(string.Empty, "Salary", total);

答案 3 :(得分:0)

可以在msdn:DataRow找到您需要的ADO.NET信息。你可以在代码中计算它,就像你已经完成或在excel文档中插入一个函数。

DataRow row = dt.NewRow();

row["Name"] = "Salary";
row["Salary"] = total;
dt.Rows.Add(row);

答案 4 :(得分:0)

首先,不要在查询中使用*,这将在以后产生令人讨厌的错误。为要检索的所有列命名。

您必须为第一列添加空字符串:

// dt.Rows.Add("Salary"); <-- remove
dt.Rows.Add("", "Salary", total);

顺便说一下,您还可以使用以下查询来获取总计数:

int total = dt.AsEnumerable.Sum(r => r.Field<int>("Salary"));