zoukankan      html  css  js  c++  java
  • DataSet转化为实体集合类

     1 /// <summary>
     2         /// DataSet转换为实体类
     3         /// </summary>
     4         /// <typeparam name="T">实体类</typeparam>
     5         /// <param name="p_DataSet">DataSet</param>
     6         /// <param name="p_TableIndex">待转换数据表索引</param>
     7         /// <returns>实体类</returns>
     8         public static T DataSetToEntity<T>(DataSet p_DataSet, int p_TableIndex)
     9         {
    10             if (p_DataSet == null || p_DataSet.Tables.Count < 0)
    11                 return default(T);
    12             if (p_TableIndex > p_DataSet.Tables.Count - 1)
    13                 return default(T);
    14             if (p_TableIndex < 0)
    15                 p_TableIndex = 0;
    16             if (p_DataSet.Tables[p_TableIndex].Rows.Count <= 0)
    17                 return default(T);
    18 
    19             DataRow p_Data = p_DataSet.Tables[p_TableIndex].Rows[0];
    20             // 返回值初始化
    21             T _t = (T)Activator.CreateInstance(typeof(T));
    22             PropertyInfo[] propertys = _t.GetType().GetProperties();
    23             foreach (PropertyInfo pi in propertys)
    24             {
    25                 if (p_DataSet.Tables[p_TableIndex].Columns.IndexOf(pi.Name.ToUpper()) != -1 && p_Data[pi.Name.ToUpper()] != DBNull.Value)
    26                 {
    27                     pi.SetValue(_t, p_Data[pi.Name.ToUpper()], null);
    28                 }
    29                 else
    30                 {
    31                     pi.SetValue(_t, null, null);
    32                 }
    33             }
    34             return _t;
    35         }
    36 
    37         /// <summary>
    38         /// DataSet转换为实体列表
    39         /// </summary>
    40         /// <typeparam name="T">实体类</typeparam>
    41         /// <param name="p_DataSet">DataSet</param>
    42         /// <param name="p_TableIndex">待转换数据表索引</param>
    43         /// <returns>实体类列表</returns>
    44         public static IList<T> DataSetToEntityList<T>(DataSet p_DataSet, int p_TableIndex)
    45         {
    46             if (p_DataSet == null || p_DataSet.Tables.Count < 0)
    47                 return default(IList<T>);
    48             if (p_TableIndex > p_DataSet.Tables.Count - 1)
    49                 return default(IList<T>);
    50             if (p_TableIndex < 0)
    51                 p_TableIndex = 0;
    52             if (p_DataSet.Tables[p_TableIndex].Rows.Count <= 0)
    53                 return default(IList<T>);
    54 
    55             DataTable p_Data = p_DataSet.Tables[p_TableIndex];
    56             // 返回值初始化
    57             IList<T> result = new List<T>();
    58             for (int j = 0; j < p_Data.Rows.Count; j++)
    59             {
    60                 T _t = (T)Activator.CreateInstance(typeof(T));
    61                 PropertyInfo[] propertys = _t.GetType().GetProperties();
    62                 foreach (PropertyInfo pi in propertys)
    63                 {
    64                     if (p_Data.Columns.IndexOf(pi.Name.ToUpper()) != -1 && p_Data.Rows[j][pi.Name.ToUpper()] != DBNull.Value)
    65                     {
    66                         pi.SetValue(_t, p_Data.Rows[j][pi.Name.ToUpper()], null);
    67                     }
    68                     else
    69                     {
    70                         pi.SetValue(_t, null, null);
    71                     }
    72                 }
    73                 result.Add(_t);
    74             }
    75             return result;
    76         }
  • 相关阅读:
    洛谷p1017 进制转换(2000noip提高组)
    Personal Training of RDC
    XVIII Open Cup named after E.V. Pankratiev. Grand Prix of Eurasia
    XVIII Open Cup named after E.V. Pankratiev. Grand Prix of Peterhof.
    Asia Hong Kong Regional Contest 2019
    XVIII Open Cup named after E.V. Pankratiev. Grand Prix of Siberia
    XVIII Open Cup named after E.V. Pankratiev. Ukrainian Grand Prix.
    XVIII Open Cup named after E.V. Pankratiev. GP of SPb
    卜题仓库
    2014 ACM-ICPC Vietnam National First Round
  • 原文地址:https://www.cnblogs.com/ezplusy/p/4054861.html
Copyright © 2011-2022 走看看