将一个DataTable转换成一个List<T>的泛型集合
2012-03-26 12:25
513 查看
//// 将一个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;
}
相关文章推荐
- 将一个DataTable转换成一个List<T>的泛型集合
- 将DataTable转换成泛型集合IList<>
- 将DataTable转换成List<T>泛型集合助手类
- 通过反射把list<T>转换成datatable,kill进程,事务传入一个Lst<String>多条sql语句
- C#读取数据库返回泛型集合 把DataSet类型转换为List<T>泛型集合
- C#将DataTable转换成单个T实体和List<T>集合
- List<T>泛型集合 类型整体快速转换
- C#读取数据库返回泛型集合 把DataSet类型转换为List<T>泛型集合
- 将泛型集合类(List<T>)转换成DataTable,返回的DataTable所有列的数据类型为string型,且列顺序与字符串提供的字段顺序一致
- 有没有代码可以判断一个List<View>集合里的view是什么view
- C#基础精华03(常用类库StringBuilder,List<T>泛型集合,Dictionary<K , V> 键值对集合,装箱拆箱)
- How to cast List<Object> to List<MyClass> Object集合转换成实体集合
- 【代码】DataTable转换成List<T>集合
- java操作<Map转换List——>list集合重新排序—>List集合转换成JSON>
- 一个Thiking泛型的例子,突然发现理解了List&lt;String&gt;的原理
- c# Json List<T> DataTable 数据相互转换
- c# List<实体>转换List<object>集合
- DataTable转换成List<T>
- .NET中string[]数组和List<string>泛型的相互转换
- Java集合转换【List<-->数组、List<-->Set、数组<-->Set、Map-->Set、Map-->List】