//// 将一个DataTable转换成一个List<T>的泛型集合
/// <summary>
/// DataTable装换成实体类T
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="dt"></param>
/// <returns></returns>
public List<T> DataTableToList<T>(DataTable dt)
{
List<T> lt = new List<T>();
if (dt == null || dt.Rows.Count == 0)
{
return lt;
}
Type objType = typeof(T);
foreach (DataRow dr in dt.Rows)
{
object obj = System.Activator.CreateInstance(objType);//创建实例
foreach (System.Reflection.PropertyInfo pi in objType.GetProperties())//遍历T类的所有属性
{
if (pi.PropertyType.IsPublic && pi.CanWrite && dt.Columns.Contains(pi.Name))//属性是否为public和可写
{
Type pType = Type.GetType(pi.PropertyType.FullName);//属性类型
object value = Convert.ChangeType(dr[pi.Name], pType);//转换dt值为对应属性的类型
objType.GetProperty(pi.Name).SetValue(obj, value, null);//赋值
}
}
lt.Add((T)obj);
}
return lt;
}
/// <summary>
/// DataTable装换成实体类T
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="dt"></param>
/// <returns></returns>
public List<T> DataTableToList<T>(DataTable dt)
{
List<T> lt = new List<T>();
if (dt == null || dt.Rows.Count == 0)
{
return lt;
}
Type objType = typeof(T);
foreach (DataRow dr in dt.Rows)
{
object obj = System.Activator.CreateInstance(objType);//创建实例
foreach (System.Reflection.PropertyInfo pi in objType.GetProperties())//遍历T类的所有属性
{
if (pi.PropertyType.IsPublic && pi.CanWrite && dt.Columns.Contains(pi.Name))//属性是否为public和可写
{
Type pType = Type.GetType(pi.PropertyType.FullName);//属性类型
object value = Convert.ChangeType(dr[pi.Name], pType);//转换dt值为对应属性的类型
objType.GetProperty(pi.Name).SetValue(obj, value, null);//赋值
}
}
lt.Add((T)obj);
}
return lt;
}