ibcadmin 发表于 2016-7-19 09:38:26

c#中DataTable转实体对象Model

每当从数据库中读取到DataTabel时,使用此方法就可以将datetable转为指定的model实体

public static IEnumerable<T> DataTableToModels<T>(this DataTable dt) where T : class, new()
      {
            //判断datatable是否有值
            if (dt.Columns.Count < 1 || dt.Rows.Count < 1) yield return default(T);
            //获取实体类中所有公开的属性,并且筛选出在datatable中存在的列
            var propertyInfos = from propertyInfo in typeof(T).GetProperties()
                              where dt.Columns.Contains(propertyInfo.Name)
                              select propertyInfo;
            //循环设置属性
            foreach (DataRow dr in dt.Rows)//遍历dt中所有行
            {
                var result = new T();
                foreach (var p in propertyInfos)//遍历所有属性
                {
                  try
                  {
                        p.SetValue(result, dr, null);
                  }
                  catch (System.Exception)
                  {

                        throw;
                  }
                }
                yield return result;
            }

      }

剑弑 发表于 2016-7-19 09:41:29

楠哥,我也写过dt转换成实体的,但是没有用到迭代。。。{:3_62:}加上迭代性能会不会更好勒

ibcadmin 发表于 2016-7-19 12:07:51

剑弑 发表于 2016-7-19 09:41
楠哥,我也写过dt转换成实体的,但是没有用到迭代。。。加上迭代性能会不会更好勒

更得劲

剑弑 发表于 2016-7-19 15:11:18

ibcadmin 发表于 2016-7-19 12:07
更得劲

{:3_62:}
页: [1]
查看完整版本: c#中DataTable转实体对象Model