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;
            }
  • 相关阅读:
    Jquery EasyUI tabs处理
    C# ToString格式控制符
    SQL删除重复数据,保留一条
    stm32f4xx 的IWDG使用的一般步骤
    stm32f4xx 的EXTI使用的一般步骤
    STM32F4xx---EXTI 外部中断
    数组和指针 到 存储类(1)
    uCosII 从 OSStart开始到思维定势··········
    《C和指针》一书介绍操作符优先级
    OSTimeTick()函数解析
  • 原文地址:https://www.cnblogs.com/chenxi001/p/11668210.html
Copyright © 2011-2022 走看看