zoukankan      html  css  js  c++  java
  • DataTable转换为Model实体对象

      记得在学校的时候,接触得最多的就是SqlHelper,每次在读取的时候不管是DataTable还是DataReader转换为实体对象的时候是最恼火的,因为要写很多代码,而且没有什么意义。后面接触到了反射,于是查了下资料也写了个已经烂大街的DataTable转换为Model实体对象

     1 public static IEnumerable<T> DataTableToModels<T>(this DataTable dt) where T : class, new()
     2         {
     3             //判断datatable是否有值
     4             if (dt.Columns.Count < 1 || dt.Rows.Count < 1) yield return default(T);
     5             //获取实体类中所有公开的属性,并且筛选出在datatable中存在的列
     6             var propertyInfos = from propertyInfo in typeof(T).GetProperties()
     7                                 where dt.Columns.Contains(propertyInfo.Name)
     8                                 select propertyInfo;
     9             //循环设置属性
    10             foreach (DataRow dr in dt.Rows)//遍历dt中所有行
    11             {
    12                 var result = new T();
    13                 foreach (var p in propertyInfos)//遍历所有属性
    14                 {
    15                     try
    16                     {
    17                         p.SetValue(result, dr[p.Name], null);
    18                     }
    19                     catch (System.Exception)
    20                     {
    21 
    22                         throw;
    23                     }
    24                 }
    25                 yield return result;
    26             }
    27 
    28         }

    需要注意的是DataTable.Columns.Contains和赋值给定Name时是不区分大小写的!

  • 相关阅读:
    JavaScript 正则表达式
    git常用命令
    用纯css使内容永远居在页面底部
    Oracle中随机抽取N条记录
    表数据回复到某个时候
    oracle同名存储过程被覆盖后如何恢复(转)
    mybatis+spring+mysql
    定位
    关于js的闭包和复制对象
    idea展示runDashboard的窗口
  • 原文地址:https://www.cnblogs.com/mldcy/p/5660694.html
Copyright © 2011-2022 走看看