zoukankan      html  css  js  c++  java
  • .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;
            }
  • 相关阅读:
    Java SE6调用动态编译
    代理模式——动态代理
    基于Eclipse的Hadoop应用开发环境配置
    利用java反射读取xml配置文件
    java nio小结
    RPC应用的java实现
    Struts2+Hibernate Update问题小结
    彻底解决hadoop0.20.203.0eclipseplugin插件安装
    Hadoop完全分布式配置
    (转)javamail发送带附件邮件
  • 原文地址:https://www.cnblogs.com/chenxi001/p/11668210.html
Copyright © 2011-2022 走看看