C#中DataSet转化为实体集合类的方法

本文实例讲述了C#中DataSet转化为实体集合类的方法,分享给大家供大家参考。具体实现方法如下:

/// <summary>

/// DataSet转换为实体类

/// </summary>

/// <typeparam name="T">实体类</typeparam>

/// <param name="p_DataSet">DataSet</param>

/// <param name="p_TableIndex">待转换数据表索引</param>

/// <returns>实体类</returns>

public static T DataSetToEntity<T>(DataSet p_DataSet, int p_TableIndex)

{

    if (p_DataSet == null || p_DataSet.Tables.Count < 0)

 return default(T);

    if (p_TableIndex > p_DataSet.Tables.Count - 1)

 return default(T);

    if (p_TableIndex < 0)

 p_TableIndex = 0;

    if (p_DataSet.Tables[p_TableIndex].Rows.Count <= 0)

 return default(T);

    DataRow p_Data = p_DataSet.Tables[p_TableIndex].Rows[0];     // 返回值初始化     T _t = (T)Activator.CreateInstance(typeof(T));     PropertyInfo[] propertys = _t.GetType().GetProperties();     foreach (PropertyInfo pi in propertys)     {  if (p_DataSet.Tables[p_TableIndex].Columns.IndexOf(pi.Name.ToUpper()) != -1 && p_Data[pi.Name.ToUpper()] != DBNull.Value)  {      pi.SetValue(_t, p_Data[pi.Name.ToUpper()], null);  }  else  {      pi.SetValue(_t, null, null);  }     }     return _t; }

/// <summary> /// DataSet转换为实体列表 /// </summary> /// <typeparam name="T">实体类</typeparam> /// <param name="p_DataSet">DataSet</param> /// <param name="p_TableIndex">待转换数据表索引</param> /// <returns>实体类列表</returns> public static IList<T> DataSetToEntityList<T>(DataSet p_DataSet, int p_TableIndex) {     if (p_DataSet == null || p_DataSet.Tables.Count < 0)  return default(IList<T>);     if (p_TableIndex > p_DataSet.Tables.Count - 1)  return default(IList<T>);     if (p_TableIndex < 0)  p_TableIndex = 0;     if (p_DataSet.Tables[p_TableIndex].Rows.Count <= 0)  return default(IList<T>);

    DataTable p_Data = p_DataSet.Tables[p_TableIndex];     // 返回值初始化     IList<T> result = new List<T>();     for (int j = 0; j < p_Data.Rows.Count; j++)     {  T _t = (T)Activator.CreateInstance(typeof(T));  PropertyInfo[] propertys = _t.GetType().GetProperties();  foreach (PropertyInfo pi in propertys)  {      if (p_Data.Columns.IndexOf(pi.Name.ToUpper()) != -1 && p_Data.Rows[j][pi.Name.ToUpper()] != DBNull.Value)      {   pi.SetValue(_t, p_Data.Rows[j][pi.Name.ToUpper()], null);      }      else      {   pi.SetValue(_t, null, null);      }  }  result.Add(_t);     }     return result; }

希望本文所述对大家的C#程序设计有所帮助。