110,539
社区成员
发帖
与我相关
我的任务
分享
var q = dataSource.AsEnumerable().GroupBy(
//按行字段合并内容为key进行分组
o => string.Join("|", rl.RowFields.Select(f => o[f.Name].ToString()))
).Select(
//生成新的数据行集
g1 => new
{
//行字段数据(第一个DataRow即可,因该IGrouping元素中行字段内容是相同的)
RowData = rl.RowFields.Select(o => g1.First()[o.Name].ToString()).ToArray(),
ColumData = g1.GroupBy(
//按透视字段合并内容为key进行分组
o => rl.ColumnFields.Count == 0 ? string.Empty : string.Join("|", rl.ColumnFields.Select(f => o[f.Name].ToString())
)).Select(
//生成透视列行集
g2 => new
{
ColumnKey = g2.Key,
//汇总字段汇总数据数组
Data = rl.DataFields.Select(o => g2.Sum(p => p[o.Name] == DBNull.Value ? 0M : Convert.ToDecimal(p[o.Name]))).ToArray()
}).ToDictionary(o => o.ColumnKey, o => o.Data)
}).OrderBy(o => o.RowData, new CompareRowData(rl.RowFields.ToArray()));
select sum(数量) as 数量 from tale where 地区='北京' and 月份='1月' and 经办人='林黛玉' and 类型='入库'