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 Ajax调用asp.net后台方法
    Android版本检测\自动更新
    android Manifest.xml选项
    Android: 自定义Tab样式
    Android TextView(EditView)文字底部或者中间 加横线
    activity横竖屏翻转不重载
    一句代码过滤字符串中所有tag标签
    去除掉TabHost下面那个边线的小技巧
    软键盘挡住控件的问题
    自定义 textview上LINK的点击事件
  • 原文地址:https://www.cnblogs.com/chenxi001/p/11668210.html
Copyright © 2011-2022 走看看