• DataTable转泛型List


    在.net项目研发过程中,有时候需要将从数据库中获取的DataTable数据类型,转换为泛型集合,然后运用LINQ对集合进行操作,我将此总结一下,方便你我他。

    核心类:这是在网上搜索的万能类,具体实现思路,大家加入断点,运行一下,一切都会明白

      /// <summary>
        /// 实体转换辅助类
        /// </summary>
        /// <typeparam name="T"></typeparam>
        public class DatatableToList<T> where T : new()
        {
            public List<T> ConvertToList(DataTable dt)
            {
                //定义集合
                List<T> ts = new List<T>();
                //获得此模型的类型
                Type type = typeof(T);
                string tempName = "";
                foreach (DataRow dr in dt.Rows)
                {
                    T t = new T();
                    //获得此模型的公共属性
                    PropertyInfo[] propertys = t.GetType().GetProperties();
                    foreach (PropertyInfo pi in propertys)
                    {
                        tempName = pi.Name;
                        //检查Datable是否包含此列
                        if (dt.Columns.Contains(tempName))
                        {
                            // 判断此属性是否有Setter
                            if (!pi.CanWrite) continue;
                            object value = dr[tempName];
                            if (value != DBNull.Value)
                                pi.SetValue(t, value, null);
                        }
                    }
                    ts.Add(t);
                }
                return ts;
            }
        }

    Model类

      public class AAA
        {
            public int PKID { set; get; }
            public int ID { set; get; }
            public string Name { set; get; }
            public string Demo { set; get; }
        }

    逻辑操作

     string query = "SELECT * FROM AAA";//AAA类对应的数据表
            DataTable dt = new DataTable();
            DAOHelper dao = new DAOHelper();//
            dt = dao.ExecuteDataTable(query);//     这两行代码是执行SQL语句,获取对应的DataTable数据,具体代码不做陈述
            dao.Dispose();        
            DatatableToList<AAA> list = new DatatableToList<AAA>();//创建核心类
    
            return list.ConvertToList(dt);执行转换方法

     总结:

        大体总结一下,不是太详细,如有疑问或者批评,欢迎大家留言,

       大体总结一下,不是太详细,如有疑问或者批评,欢迎大家留言,

      也是自己的一份笔记,希望可以帮到大家。

  • 相关阅读:
    攻防一体 暴力攻击
    新的亮眼的但不彻底的交互
    利用物联网或智能化区分产品
    Character Sets, Collation, Unicode :: utf8_unicode_ci vs utf8_general_ci
    容灾 RPO RTO
    微信找人代付 下单账号 支付账号
    微信公众号 openId 支付 php中file_get_contents与curl性能比较分析
    t
    accesstoken 中控服务器 并发刷新 加并发锁
    a
  • 原文地址:https://www.cnblogs.com/txqx/p/8391382.html
Copyright © 2020-2023  润新知