Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中创建透视表#_C#_Linq - Fatal编程技术网

C# 在C中创建透视表#

C# 在C中创建透视表#,c#,linq,C#,Linq,在我的c#程序中,有人输入了一整天的产量,我计算机器使用率(MU),如下所示: 所有这些数据都在我的SQL server中,我想做的是制作一个类似pivot表的东西,它需要所有相似的日期/模具编号/机器编号,并对MU进行平均,并以用户想要的任何方式显示。例如: Date | MU 2/12/2016 | 32.0% 2/16/2016 | 55.4% 或 等等,基本上我希望它是可变的,并显示任何人正在看它需要。我想把它保存在我的c#程序中,但我可以使用LINQ to SQL。请

在我的c#程序中,有人输入了一整天的产量,我计算机器使用率(MU),如下所示:

所有这些数据都在我的SQL server中,我想做的是制作一个类似pivot表的东西,它需要所有相似的日期/模具编号/机器编号,并对MU进行平均,并以用户想要的任何方式显示。例如:

Date      |  MU
2/12/2016 |  32.0%
2/16/2016 |  55.4%

等等,基本上我希望它是可变的,并显示任何人正在看它需要。我想把它保存在我的c#程序中,但我可以使用LINQ to SQL。请记住,我对c#和LINQ对SQL都是新手


我确实试着去做,但这并不完全是我想做的。我也不知道如何在windows窗体上显示它,也不知道如何更改每个列中的内容。

似乎您需要使用行维度(日期、机器编号)构建透视表,而不使用列维度,并使用平均值(按MU)

借助NReco数据透视库,您可以轻松做到这一点:

var pivotData = new PivotData(
    new string[] {"Date","Machine Num"},
    new AverageAggregatorFactory("MU"),
    new DataTableReader(t) );  // just a sample - you can use DB data reader
var pivotTable = new PivotTable(
    new []{"Date"}, // row dimension(s)
    new [0], // column dimension(s)
    pivotData );
// use pivotTable.RowKeys and indexer for accessing pivot table values

PivotData库可以免费使用(我是作者),您可以在组件页面上下载示例包。此外,您还可以检查高级数据透视工具包组件(用于将数据透视表呈现为HTML/CSV/Excel/PDF,使用GROUP BY和许多其他工具在数据库级别聚合数据),但这些组件不是免费的

根据您的描述,您需要的不是@juharr已经提到的透视表。 对于sqlite,这应该通过以下语句来完成。(我假设表名为
tmp
,您想要的是每个
MachineNUm
MU
之和,用
SMU
命名)


希望能有所帮助。

您所描述的内容听起来不像是数据透视表。听起来你只是想按某个东西分组,然后做一个平均值。数据透视表将单元格中的值更改为列名。@juharr我在excel中使用数据透视表时,这是我唯一能想到的描述数据透视表的方法。太好了,我不知道那个工具。仅供参考,您页面上的第一个示例(在线c#pivot表演示)看起来不正确-行=[Country,year],列=[Products]。@CetinBasoz hm刚刚检查过-似乎正确。你能和我联系并解释一下为什么不正确吗?也许我遗漏了一些琐碎的东西……第一个是“行=[国家]、列=[年份]、度量=[销售计数]”。然而,数据透视表显示“行=[国家,年份],列=[产品]”。
Machine Num. | MU 
12       | 34.4%
36       | 27.1%
54       | 53.0%
56       | 57.6%
var pivotData = new PivotData(
    new string[] {"Date","Machine Num"},
    new AverageAggregatorFactory("MU"),
    new DataTableReader(t) );  // just a sample - you can use DB data reader
var pivotTable = new PivotTable(
    new []{"Date"}, // row dimension(s)
    new [0], // column dimension(s)
    pivotData );
// use pivotTable.RowKeys and indexer for accessing pivot table values
SELECT MachineNum,SUM(MU) AS SMU From tmp GROUP BY MachineNum ORDER BY MachineNum;