.NET DataTable扩展之快速处理DataTable映射到List数组

// C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8\System.Data.DataSetExtensions.dll

我项目引用的是.NETFramework\v4.8下的一个扩展.dll

public List<CaseStatusModel> GetTECaseStatus()
{
    using (var db = new DBCommon())
    {
        var result = new List<CaseStatusModel>();
        string sql = @"with 
					t as(
						select count(ID) CaseCount,IsActive,[Period] from TE_T_TESummaryCase where 1=1 group by IsActive ,[Period]
					)
					select top 12 t.[Period]
					,sum(case t.IsActive when 1 then t.CaseCount else 0 end) as PendingCase
					,sum(case t.IsActive when 0 then t.CaseCount else 0 end) as ClosedCase
					from t
					group by t.[Period]
					order by t.[Period] desc";
        DataTable dt = db.ExecuteQuery(sql.ToString());
        if (dt != null && dt.Rows.Count > 0)
        {
            result = dt.AsEnumerable().Select(t => new CaseStatusModel()
            {
                //可空选项
                Month = t.Field<DateTime?>("Period")?.ToString("yyyy-MM"),
                PendingCase = t.Field<int>("PendingCase"),
                ClosedCase = t.Field<int>("ClosedCase")
            }).ToList();
        }
        return result;
    }
}

原表长这样

数据库查询结果长这样

 List返回长这样

以前项目没有数据对象映射方法的时候,for循环遍历DataTable感觉没有这种精简吧,特此记录

 仅供学习参考,如有侵权联系我删除

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值