xiaolizi007
11/25/2016 - 5:54 AM

DataTable转换为List对象

DataTable转换为List对象 #csharp

#region 将DataTable转换为List对象 
/// <summary> 
/// 利用反射将DataTable转换为List<T>对象 
/// </summary> 
/// <param name="dt">DataTable 对象</param> 
/// <returns>List<T>集合</returns> 
public static List<T> DataTableToList<T>(DataTable dt) where T : class,new() { 
    // 定义集合 
    List<T> ts = new List<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)) 
        { 
                //取值 
                object value = dr[tempName];
                //如果非空,则赋给对象的属性 
                if (value != DBNull.Value) 
                {
                    pi.SetValue(t, value, null); 
                } 
        } 
        //对象添加到泛型集合中
        ts.Add(t); 
    } 
    return ts;
}
#endregion