C#转换数据表值

时间:2019-06-15 17:39:58

标签: c# datatable

我将一个csv文件读入DataTable,在某个时候,我想将某些列从字符串转换为double来执行groupBy等操作。

下面是说明问题的示例示例。是否有任何方法可以通过更改列数据以执行一些其他操作来从上一个表生成新表(dt)。

PS:我知道必须从一开始就使用正确的数据类型来完成。

    private void BtnApply_Click(object sender, EventArgs e)
    {
        DataTable table = new DataTable();
        table.Columns.Add("RevenueI", typeof(string));
        table.Columns.Add("RevenueII", typeof(string));
        table.Columns.Add("Name", typeof(string));
        table.Columns.Add("Bonus", typeof(string));

        // Here we add five DataRows.
        table.Rows.Add("180.50", "45000.45", "David", "4700");
        table.Rows.Add("50.24", "22000.32", "Susane", "3500");
        table.Rows.Add("10.78", "41000.12", "Adam", "2800");
        table.Rows.Add("21.32", "33500.00", "Janet", "5400");
        table.Rows.Add("100.89", "52000.32", "Melanie", "2300");
        table.Rows.Add("25.23", "48978.00", "David", "3600");

        var dt = table.AsEnumerable()
          .GroupBy(r => r.Field<string>("Name"))
          .Select(g =>
          {
              var row = table.NewRow();

              row["Name"] = g.Key;
              row["RevenueI"] = g.Sum(r => r.Field<double>("RevenueI"));
              row["RevenueI"] = g.Sum(r => r.Field<double>("RevenueII"));
              row["Bonus"] = g.Sum(r => r.Field<double>("Bonus"));

              return row;
          }).CopyToDataTable();

        dtGrid.DataSource = dt;

0 个答案:

没有答案