从DataTable创建数据透视表

ImG*_*reg 12 c# datatable pivot pivot-table winforms

我正在使用C#winforms创建一个需要将数据表转换为数据透视表的应用程序.我让数据透视表从SQL端运行良好,但从数据表创建它似乎比较棘手.我似乎无法为此找到.NET中的任何内容.

注意:我必须在.NET端执行此操作,因为我在创建数据透视之前操作数据.

我读过一些做过类似事情的文章,但我很难将它们应用到我的问题中.

*我有一个数据表,其中包含"StartDateTime","Tap"和"Data"列.应将startdates组合在一起并平均数据值(有时每个startdate有多个数据值).表格如下所示:

在此输入图像描述

数据透视表应该输出如下图所示(尽管不是舍入值).列号是不同的抽头编号(每个唯一编号一个).

数据透视表

如何从数据表创建此数据透视表?

编辑:忘记提及,这些抽头值并不总是从1-4开始,它们的数量和价值各不相同.

Jos*_*hua 5

了解哈希透视图tesuji:

var inDT = new DataTable();
// Fill the input table

var oDT = new DataTable();
var dfq = new Dictionary<DateTime, DataRow>;
oDT.Columns.Add("StartDateTime", typeof(DateTime));
for (int i = 0; i < inDT.Rows.Count; i++) {
    var key = (DateTime)inDT.Rows[i][0];
    var row = (String)inDT.Rows[i][2];
    var data = (Double)inDT.Rows[i][1];

    if (!oDT.Columns.Contains(row)) {
       oDT.Columns.Add(row);
    }
    if (dfq.ContainsKey(key)) {
        dfq[key][row] = data;
    } else {
        var oRow = oDT.NewRow();
        oRow[0] = key;
        oRow[row] = data;
        dfq.Add(key, oRow);
        oDT.Rows.Add(oRow);
    }
}
// pivot table in oDT
Run Code Online (Sandbox Code Playgroud)

  • 如果您添加一些评论以了解这里发生的事情,那将是很好的 (2认同)