我正在使用 C# winforms 创建一个需要将数据表转换为数据透视表的应用程序。我的数据透视表从 SQL 端运行良好,但从数据表创建它似乎更棘手。为此,我似乎找不到任何内置到 .NET 中的东西。
注意:我必须从 .NET 端执行此操作,因为我在创建数据透视表之前操作数据。
我已经阅读了一些与此类似的文章,但我很难将它们应用到我的问题中。
*我有一个包含“StartDateTime”、“Tap”和“Data”列的数据表。应将开始日期组合在一起并对数据值进行平均(有时每个开始日期有多个数据值)。表格如下:
数据透视表的输出应如下图所示(但不是四舍五入的值)。列号是不同的抽头号(每个唯一的一个)。
我怎样才能从数据表创建这个数据透视表?
编辑:忘记提及,这些抽 header value 并不总是从 1 到 4,它们在数量和值上确实有所不同。
最佳答案
学习哈希轴手筋:
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
关于c# - 从 DataTable 创建数据透视表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9981120/