【发布时间】:2016-06-30 07:01:29
【问题描述】:
我一直在为这个问题苦苦挣扎,想知道是否可以得到一些帮助。
我有以下物品:
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();
}
如何过滤掉每个组合值(对于可变数量的行和列)对我来说很困难。不仅如此,我还需要为每个值列选择所有值,以便按照我认为合适的方式对其进行汇总。
任何帮助都会很大!
谢谢 乔恩
【问题讨论】:
-
所以我创建了一组手动检查表并执行聚合、递归字典功能的函数,但我想看看我是否可以 linqify 这个过程。我不知道递归函数是否有帮助 - 我应该添加它吗?
标签: c# linq dynamic datatable pivot