• DataTable到实体类的转换 中庸


        搞软件差不多的都知道,经常用到DataTable到实体类的转换,常用的就是利用列名或索引一列一列给实体赋值,如果列少还行,列多的话,真是烦死人,而且容易出错.偶也常被困扰.早就写这样的方法.却一直没有时间,前几天忙里偷闲,参考一些资料,改编了别人的一些方法,现分享如下:

        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;
            }

       备注:1.里面用到了反射与泛型,而且都是最入门级的.不再做详解

  • 相关阅读:
    Python 接口测试之结果集比较封装
    Python 接口测试之发送邮件封装
    Python 接口测试之接口请求方法封装
    Python 接口测试之获取接口数据封装
    Python 接口测试之接口关键字封装
    Python 接口测试之Excel表格数据操作方法封装
    [c++] 二级指针的原理
    [bug] java.text.ParseException: Unparseable date: "2020-01-01"
    [bug] IDEA编译时出现 Information:java: javacTask: 源发行版 1.8 需要目标发行版 1.8
    [bug] maven“1.5不支持diamond运算符,请使用source 7或更高版本以启用diamond运算符”
  • 原文地址:https://www.cnblogs.com/liangjie/p/2193850.html
Copyright © 2020-2023  润新知