.net 数据源DataSet 转换成模型

/// <summary>
        ///  DataSet转换成model 自动赋值返回集合
        /// </summary>
        /// <typeparam name="T">模型类型</typeparam>
        /// <param name="dataList">传入数据DataSet数据源</param>
        /// <param name="obj">传入模型</param>
        /// <returns></returns>
        public List<T> DataSetBindList<T>(DataSet dataList,T obj) where T : new()
        {
            //创建一个泛型
            List<T> lists = new List<T>();
            //遍历DataSet数据源
            foreach (DataRow item in dataList.Tables[0].Rows)
            {
                //将赋值的模型添加到集合里面
                lists.Add(assignmentClass(new T(), item));  
            }
            return lists;
        }
        /// <summary>
        /// DataSet转换成model 自动赋值返回模型
        /// </summary>
        /// <typeparam name="T">模型类型</typeparam>
        /// <param name="dataList">传入数据DataSet数据源</param>
        /// <param name="obj">传入模型</param>
        /// <returns></returns>
        public T DataSetBindClass<T>(DataSet dataList, T obj) where T : new()
        {
            //创建一个模型
            T model = new T();
            //遍历数据源
            foreach (DataRow item in dataList.Tables[0].Rows)
            {
                //将数据添加到模型里面
                model = assignmentClass(new T(), item);
            }
            return model;
        }

        /// <summary>
        /// 抽象出赋值部分
        /// </summary>
        /// <typeparam name="T">模型类型</typeparam>
        /// <param name="obj">传入模型</param>
        /// <param name="item">传入数据DataRow数据源</param>
        /// <returns></returns>
        public T assignmentClass<T>(T obj, DataRow item) where T : new()
        {
            //先判断模型是不是等于空
            if (obj==null)
            {
                //等于空创建一个
                obj = new T();
            }
            //获取模型的类型
            Type type = obj.GetType();  //得到类型
            PropertyInfo[] properts = type.GetProperties(); //得到类型的所有属性,也就是表对应的实体模型的所有属性
            //遍历PropertyInfo
            foreach (PropertyInfo propertyInfo in properts)
            {
                //判断数据是否存在
                int index = item.Table.Columns.IndexOf(propertyInfo.Name);
                if (index != -1)
                {
                    //判断数据源的数据不能为空
                    if (item[propertyInfo.Name] != null && item[propertyInfo.Name] != DBNull.Value)
                    {
                        //给obj赋值
                        propertyInfo.SetValue(obj, Convert.ChangeType(item[propertyInfo.Name], propertyInfo.PropertyType), null);
                    }
                }
            }
            return obj;
        }
原文地址:https://www.cnblogs.com/chenxi001/p/11668210.html