12345678910111213141516171819202122232425262728293031323334353637 |
- using System;
- using System.Collections.Generic;
- using System.Data;
- using System.Linq;
- using System.Reflection;
- using System.Text;
- namespace EMIS.Utility
- {
- public static class DateTableHelper
- {
- public static List<T> DataTableToList<T>(this DataTable dt) where T : class, new()
- {
- //创建一个属性的列表
- List<PropertyInfo> prlist = new List<PropertyInfo>();
- //获取TResult的类型实例 反射的入口
- Type t = typeof(T);
- //获得TResult 的所有的Public 属性 并找出TResult属性和DataTable的列名称相同且可写的属性(PropertyInfo), 并加入到属性列表
- Array.ForEach<PropertyInfo>(t.GetProperties(), p => { if (dt.Columns.IndexOf(p.Name) != -1 && p.CanWrite) prlist.Add(p); });
- //创建返回的集合
- List<T> oblist = new List<T>();
- foreach (DataRow row in dt.Rows)
- {
- //创建TResult的实例
- T ob = new T();
- //找到对应的数据 并赋值
- prlist.ForEach(p => { if (row[p.Name] != DBNull.Value) p.SetValue(ob, row[p.Name], null); });
- //放入到返回的集合中.
- oblist.Add(ob);
- }
- return oblist;
- }
- }
- }
|