[英]Dynamic Linq Query from Datatable for Pivot Table
我已經為這個問題苦苦掙扎了一段時間,想知道是否能得到一些幫助。
我有以下物品:
Datatable inputdata = //Data from large scale SQL query
var rowvals = (from x in reportattrs.AsEnumerable()
where x.Field<long>("COLFORREPORT") == 0 && x.Field<long>("VALUEFIELD") == 0
orderby x.Field<long>("ORDERDISPLAY")
select new { Name = x.Field<object>("FIELDNAME") });
var colvals = (from x in reportattrs.AsEnumerable()
where x.Field<long>("COLFORREPORT") == 1 && x.Field<long>("VALUEFIELD") == 0
orderby x.Field<long>("ORDERDISPLAY")
select new { Name = x.Field<object>("FIELDNAME") });
var datavals = (from x in reportattrs.AsEnumerable()
where x.Field<long>("COLFORREPORT") == 1 && x.Field<long>("VALUEFIELD") == 1
orderby x.Field<long>("ORDERDISPLAY")
select new { Name = x.Field<object>("FIELDNAME") });
Rowvals是我們要在行中過濾的表的屬性,colvals是數據透視表的列值,datavals是數據總和
我要做的是創建自己的自定義數據透視表例程,該例程使我可以使用更復雜的方法進行過濾和分層。
我能夠獲得一行的特定不同值:
foreach(object val in rowvals){
var distinctValues = dsValues.AsEnumerable()
.Select(row => new {
attribute1_name = row.Field<string>(val)
})
.Distinct();
}
我很難篩選出組合中的每個值(對於可變數量的行和列)。 不僅如此,我還需要為每個值列選擇所有值,以便可以按照自己認為合適的方式對其進行匯總。
任何幫助將是極大的!
謝謝喬恩
尚不清楚您的輸入數據是什么樣子; 因為您要構建數據透視表,所以我假設它可以像這樣以數據集的形式呈現(如果沒有,則應將其轉換為數據透視表操作可接受的表格視圖):
col1 | col2 | val1
-------------------
C1 | R1 | 1
C1 | R2 | 2
C1 | R1 | 3
C2 | R1 | 4
所需的數據透視表就是這樣(讓數據透視表列使用'col1'值,對行使用'col2'值,對值使用val1的SUM):
| C1 | C2
-----------------
R1 | 4 | 4
R2 | 2 | 0 (or empty)
這樣的數據透視表數據可以通過NReco PivotData庫輕松地計算,只需幾行代碼(免責聲明:我是該庫的作者):
// group and calculate measures
var pivotData = new PivotData(
new string[] {"col1","col2"},
new SumAggregatorFactory("val1"),
new DataTableReader(t) );
// get pivot table model for accessing columns/rows/values in easy way
var pivotTable = new PivotTable(
new []{"col2"}, // row dimension(s)
new []{"col1"}, // column dimension(s)
pivotData );
var rowLabels = pivotTable.RowKeys;
var colLabels = pivotTable.ColumKeys;
var cellValue = pivotTable[0, 0].Value; // R1 + C1: 4
var grandTotal = pivotTable[null,null].Value; // 10
您還可以為行/列指定幾列,並可以計算幾項度量。 如果有不清楚的地方,請隨時與我聯系。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.