欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

DataTable 转List

程序员文章站 2022-06-04 12:24:58
忘了出处 ,这个是转别人的 public class DataToList where T : new() { /// /// 利用反射和泛型 /// /// ///

忘了出处   ,这个是转别人的

public class datatolist<t> where t : new()
{
/// <summary>
/// 利用反射和泛型
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static list<t> converttolist(datatable dt)
{

// 定义集合
list<t> ts = new list<t>();

// 获得此模型的类型
type type = typeof(t);
//定义一个临时变量
string tempname = string.empty;
//遍历datatable中所有的数据行
if (dt != null)
{
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;

}
}