最近在做报表统计方面的需求,涉及到行转列报表。根据以往经验使用SQL可以比较容易完成,这次决定挑战一下直接通过代码方式完成行转列。期间遇到几个问题和用到的新知识这里整理记录一下。
阅读目录
问题介绍 动态Linq System.Linq.Dynamic其它用法 总结问题介绍
以家庭月度费用为例,可以在[Name,Area,Month]三个维度上随意组合进行分组,三个维度中选择一个做为列显示。
/// <summary>
/// 家庭费用情况
/// </summary>
public class House
{
/// <summary>
/// 户主姓名
/// </summary>
public string Name { get; set; }
/// <summary>
/// 所属行政区域
/// </summary>
public string Area { get; set; }
/// <summary>
/// 月份
/// </summary>
public string Month { get; set; }
/// <summary>
/// 电费金额
/// </summary>
public double DfMoney { get; set; }
/// <summary>
/// 水费金额
/// </summary>
public double SfMoney { get; set; }
/// <summary>
/// 燃气金额
/// </summary>
public double RqfMoney { get; set; }
}
| 户主-月明细报表 | ||||||
| 户主姓名 | 2016-01 | 2016-02 | ||||
|---|---|---|---|---|---|---|
| 电费 | 水费 | 燃气费 | 电费 | 水费 | 燃气费 | |
| 张三 | 240.9 | 30 | 25 | 167 | 24.5 | 17.9 |
| 李四 | 56.7 | 24.7 | 13.2 | 65.2 | 18.9 | 14.9 |
| 区域-月明细报表 | ||||||
| 户主姓名 | 2016-01 | 2016-02 | ||||
|---|---|---|---|---|---|---|
| 电费 | 水费 | 燃气费 | 电费 | 水费 | 燃气费 | |
| 江夏区 | 2240.9 | 330 | 425 | 5167 | 264.5 | 177.9 |
| 洪山区 | 576.7 | 264.7 | 173.2 | 665.2 | 108.9 | 184.9 |










