一,

  1. /// <summary>
  2. /// 将Datatable转换为List集合
  3. /// </summary>
  4. /// <typeparam name="T">类型参数</typeparam>
  5. /// <param name="dt">datatable表</param>
  6. /// <returns></returns>
  7. public static List<T> DataTableToList<T>(DataTable dt)
  8. {
  9. var list = new List<T>();
  10. Type t = typeof(T);
  11. var plist = new List<PropertyInfo>(typeof(T).GetProperties());
  12.  
  13. foreach (DataRow item in dt.Rows)
  14. {
  15. T s = System.Activator.CreateInstance<T>();
  16. for (int i = ; i < dt.Columns.Count; i++)
  17. {
  18. PropertyInfo info = plist.Find(p => p.Name == dt.Columns[i].ColumnName);
  19. if (info != null)
  20. {
  21. if (!Convert.IsDBNull(item[i]))
  22. {
  23. info.SetValue(s, item[i], null);
  24. }
  25. }
  26. }
  27. list.Add(s);
  28. }
  29. return list;
  30. }

二,

  1. public static IList<T> convertToList<T>(DataTable dt) where T : new()
    8         {
    9             // 定义集合
    10             List<T> ts = new List<T>();
    11
    12             // 获得此模型的类型
    13             Type type = typeof(T);
    14             //定义一个临时变量
    15             string tempName = string.Empty;
    16             //遍历DataTable中所有的数据行 
    17             foreach (DataRow dr in dt.Rows)
    18             {
    19                 T t = new T();
    20                 // 获得此模型的公共属性
    21                 PropertyInfo[] propertys = t.GetType().GetProperties();
    22                 //遍历该对象的所有属性
    23                 foreach (PropertyInfo pi in propertys)
    24                 {
    25                     tempName = pi.Name;//将属性名称赋值给临时变量  
    26                     //检查DataTable是否包含此列(列名==对象的属性名)    
    27                     if (dt.Columns.Contains(tempName))
    28                     {
    29                         // 判断此属性是否有Setter  
    30                         if (!pi.CanWrite) continue;//该属性不可写,直接跳出  
    31                         //取值  
    32                         object value = dr[tempName];
    33                         //如果非空,则赋给对象的属性  
    34                         if (value != DBNull.Value)
    35                             pi.SetValue(t, value, null);
    36                     }
    37                 }
    38                 //对象添加到泛型集合中
    39                 ts.Add(t);
    40             }
    41             return ts;
    42         }

三,

1.DataTable到List<T>的转换

public static List<T> DataTableToT<T>(DataTable source) where T : class, new()
          {
            List<T> itemlist = null;
            if (source == null || source.Rows.Count == 0)
            {
                return itemlist;
            }
            itemlist = new List<T>();
            T item = null;
            Type targettype = typeof(T);
            Type ptype = null;
            Object value = null;
            foreach (DataRow dr in source.Rows)
            {
                item = new T();
                foreach (PropertyInfo pi in targettype.GetProperties())
                {
                    if (pi.CanWrite && source.Columns.Contains(pi.Name))
                    {
                        ptype = Type.GetType(pi.PropertyType.FullName);
                        value = Convert.ChangeType(dr[pi.Name], ptype);
                        pi.SetValue(item, value, null);
                    }
                }
                itemlist.Add(item);
            }

return itemlist;
         }
    2.DataRow到T的转换

public static T DataRowToT<T>(DataRow source) where T:class,new()
        {
            T item = null;
            if (source == null)
            {
                return item;
            }
            item = new T();
            Type targettype = typeof(T);
            Type ptype = null;
            Object value = null;
           
            foreach (PropertyInfo pi in targettype.GetProperties())
            {
                if (pi.CanWrite && source.Table.Columns.Contains(pi.Name))
                {
                    ptype = Type.GetType(pi.PropertyType.FullName);
                    value = Convert.ChangeType(source[pi.Name], ptype);
                    pi.SetValue(item, value, null);
                }
            }
            return item;
        }

Datatable转换成List实体对象列表 几个实例的更多相关文章

  1. Gson把json串转换成java实体对象

    Gson把json串转换成java实体对象的方法如下: 1.首先导入Gson的jar包,网上可以下载. java实体对象如下: public class Model { private double ...

  2. 通过.net反射技术实现DataReader转换成Model实体类列表

     public static T ReaderToModel<T>(IDataReader dr) { try {  using (dr) {  if (dr.Read()) {  Typ ...

  3. C# DataTable转换成实体列表 与 实体列表转换成DataTable

    /// <summary> /// DataTable转换成实体列表 /// </summary> /// <typeparam name="T"&g ...

  4. 将list<对象>转换成DataTable,把DataTable转换成参数传入存储过程实现批量插入数据

    领导让在存储过程中批量添加数据,找出效率最高的,我看到后台代码后,发现可以将list<对象>转换成DataTable,把DataTable转换成参数传入存储过程实现批量插入数据,知道还有其 ...

  5. 简单的反射 把datatable 转换成list对象

    /// <summary> /// 把datatable 转换成list对象 /// </summary> /// <typeparam name="T&quo ...

  6. 项目中常用方法总结(将将DataTable数据集映射到实体对象)【转】

    本篇把项目中用到的一些通用方法总结出来, 这些方法因为经常需要在项目中用到,所以把它们归纳在一起, 形成一个.dll 文件是一个理想的选择. 这样也便于日后缩短开发周期. 一. 把一个DataGrid ...

  7. C#将DataTable转换成list的方法

    本文实例讲述了C#将DataTable转换成list及数据分页的方法.分享给大家供大家参考.具体如下: /// <summary>   /// 酒店评论列表-分页  /// </su ...

  8. C# 中 DataTable转换成IList

    在用C#作开发的时候经常要把DataTable转换成IList:操作DataTable比较麻烦,把DataTable转换成IList,以对象实体作为IList的元素,操作起来就非常方便. 注意:实体的 ...

  9. DataTable转换成IList

    //文章出处: http://www.cnblogs.com/hlxs/archive/2011/05/09/2087976.html DataTable转换成IList 在用C#作开发的时候经常要把 ...

随机推荐

  1. 掌握 ActionResult

    我在上一篇博客不要停留在表面,MVC 3 我们要深入一些 说明了我们的掌握程度还是不够,还需要我们继续努力.但是有园友质疑说他们认为我说的只是书院派,并不实用,这令作为程序员的我很是生气.好吧,那咱们 ...

  2. python参考手册 Read

    P28 复制 a = [1,2,3,[1,2]] b = a b is a # True c = list[a] # shallow copy c is a # False c[3][0] = 100 ...

  3. hdu 5626 Clarke and points 数学推理

    Clarke and points Problem Description   The Manhattan Distance between point A(XA,YA) and B(XB,YB) i ...

  4. C语言之指针

    以32为系统为例. 1.指针与地址指针是一种变量,保存了所指向对象的地址.1.1 定义int i = 10;int *p = &i; //定义了一个指针p,它指向一个int型的变量&是 ...

  5. Hive优化(转)

    一.join优化 Join查找操作的基本原则:应该将条目少的表/子查询放在 Join 操作符的左边.原因是在 Join 操作的 Reduce 阶段,位于 Join 操作符左边的表的内容会被加载进内存, ...

  6. 开发设计模式(七)工厂模式(Factory Method Pattern)

    工厂模式是我们最常用的模式了,著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见. 为什么工厂模式是如此常用?因为工厂模式就相当于创建实例对象的new,我们经常要根 ...

  7. javascript高级编程笔记03(正则表达式)

    引用类型 检测数组 注:我们实际开发中经常遇到要把数组转化成以逗号隔开,我以前都是join来实现,其实又更简单的方法可以用toString方法,它会自动用逗号隔开转换成字符串,其实toString内部 ...

  8. 线上问题:如何定位解决CPU高占有率

    (原文转自:http://www.blogjava.net/hankchen) 以我们最近出现的一个实际故障为例,介绍怎么定位和解决这类问题. 根据top命令,发现PID为28555的Java进程占用 ...

  9. 用 Maven 做项目构建

    转自:http://www.ibm.com/developerworks/cn/java/j-lo-maven/index.html 本文将介绍基于 Apache Maven 3 的项目构建的基本概念 ...

  10. MySql排序性能对比