zoukankan      html  css  js  c++  java
  • DataSet转换为泛型集合和DataRow 转成 模型类

       public static class TransformToList
        {
            /// <summary>         
            /// DataSet转换为泛型集合         
            /// </summary>         
            /// <typeparam name="T">泛型类型</typeparam>         
            /// <param name="ds">DataSet数据集</param>         
            /// <param name="tableIndex">待转换数据表索引,默认第0张表</param>         
            /// <returns>返回泛型集合</returns>         
            public static List<T> ToList<T>(this DataSet ds, int tableIndex = 0)
            {
    
                if (ds == null || ds.Tables.Count < 0) return null;
                if (tableIndex > ds.Tables.Count - 1)
                    return null;
    
                if (tableIndex < 0)
                    tableIndex = 0;
    
                DataTable dt = ds.Tables[tableIndex];
    
                // 返回值初始化             
                List<T> result = new List<T>();
                for (int j = 0; j < dt.Rows.Count; j++)
                {
                    T _t = (T)Activator.CreateInstance(typeof(T));
                    PropertyInfo[] propertys = _t.GetType().GetProperties();
    
                    foreach (PropertyInfo pi in propertys)
                    {
                        for (int i = 0; i < dt.Columns.Count; i++)
                        {
    
                            // 属性与字段名称一致的进行赋值                         
                            if (pi.Name.Equals(dt.Columns[i].ColumnName))
                            {
    
                                // 数据库NULL值单独处理                             
                                if (dt.Rows[j][i] != DBNull.Value)
                                    pi.SetValue(_t, dt.Rows[j][i], null);
                                else
                                    pi.SetValue(_t, null, null);
                                break;
                            }
                        }
                    }
                    result.Add(_t);
                }
                return result;
            }
    
    
            /// <summary>
            /// DataRow 转成 模型
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="dr"></param>
            /// <returns></returns>
            public static T ToModel<T>(this DataRow dr) where T : class, new()
            {
                T ob = new T();
                if (dr != null)
                {
                    Type vType = typeof(T);
                    //创建一个属性的列表
                    PropertyInfo[] prlist = vType.GetProperties();
    
    
                    DataColumnCollection vDataCoulumns = dr.Table.Columns;
                    try
                    {
                        foreach (PropertyInfo vProInfo in prlist)
                        {
                            if (vDataCoulumns.IndexOf(vProInfo.Name) >= 0 && dr[vProInfo.Name] != DBNull.Value)
                            {
                                vProInfo.SetValue(ob, dr[vProInfo.Name], null);
                            }
                        }
                    }
                    catch (Exception ex)
                    {
    
    
                    }
                }
                return ob;
            }
    
        }
  • 相关阅读:
    测试Leader应该做哪些事
    软件测试基础理论详解
    测试用例设计方法--场景分析法详解
    测试用例设计方法--因果图法、判断表法详解
    测试用例设计方法--正交试验法详解
    jira创建仪表盘以及对应的数据用二维表显示
    如何对PyCharm进行设置
    selenium+python自动化测试环境安装
    卸载loadrunner
    通过抓包工具(fiddler)获取手机app/微信的网络信息
  • 原文地址:https://www.cnblogs.com/Kendy/p/10271662.html
Copyright © 2011-2022 走看看