Datatable转泛型
2016-06-19 21:46
148 查看
Datatable转泛型
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Collections; using System.Reflection; namespace SqlDAL { public class ConvertHelper { public List<T> convertToList<T>(DataTable dt) where T : new() { // 定义集合 List<T> ts = new List<T>(); // 获得此模型的类型 Type type = typeof(T); //定义一个临时变量 string tempName = string.Empty; //遍历DataTable中所有的数据行 foreach (DataRow dr in dt.Rows) { T t = new T(); // 获得此模型的公共属性 PropertyInfo[] propertys = t.GetType().GetProperties(); //遍历该对象的所有属性 foreach (PropertyInfo pi in propertys) { tempName = pi.Name;//将属性名称赋值给临时变量 //检查DataTable是否包含此列(列名==对象的属性名) if (dt.Columns.Contains(tempName)) { // 判断此属性是否有Setter if (!pi.CanWrite) continue;//该属性不可写,直接跳出 //取值 object value = dr[tempName]; //如果非空,则赋给对象的属性 if (value != DBNull.Value) pi.SetValue(t, value, null); } } //对象添加到泛型集合中 ts.Add(t); } return ts; } } }
DataTable table =SqlDAL.SQLHelper.GetDataTable(sql, CommandType.Text, sqlParams);//调用SqlHelper中的有返回值的方法 if (table.Rows.Count > 0) { ConvertHelper ctl = new ConvertHelper(); List<Entity.UserInfo> list = new List<Entity.UserInfo>(); list = ctl.convertToList<Entity.UserInfo>(table); return list; } else { return null; }
相关文章推荐
- 多态性
- 课程总结
- Hibernate多对多关系
- 通过百度echarts实现数据图表展示功能
- appache源码安装
- 166. Fraction to Recurring Decimal
- Quartz定时任务
- ListView分页加载数据
- 代码注释主要有哪几种
- 40条常见的移动端Web页面问题解决方案
- C 与 JAVA 的对比分析
- 2008年北大核心有效期 计算机类核心(2011-01-31 15:02:46)
- osgEarth2.7+vs2010+win7编译方法
- 大数相加
- R语言笔记一
- 解决Matlab画图直接保存.eps格式而导致图不全的问题
- java中的synchronized实例(代码块)
- osgOcean+VS2010+Win7编译方法
- html和css基础知识
- BeautifulSoup 的用法