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;
            }
  • 相关阅读:
    pdflush的工作原理
    proc/sys/net/ipv4/下各项的意义
    Linux系统调用--getrlimit()与setrlimit()函数详解
    定位多线程内存越界问题实践总结
    Linux动态频率调节系统CPUFreq之三:governor
    Linux动态频率调节系统CPUFreq之二:核心(core)架构与API
    Linux动态频率调节系统CPUFreq之一:概述
    ubuntu cpu频率控制
    ThinkPHP5.1的数据库链接和增删改查
    php 常用的常量
  • 原文地址:https://www.cnblogs.com/chenxi001/p/11668210.html
Copyright © 2011-2022 走看看