C#中DataSet转化为实体集合类的方法
本文实例讲述了C#中DataSet转化为实体集合类的方法,分享给大家供大家参考。具体实现方法如下:
///<summary>
///DataSet转换为实体类
///</summary>
///<typeparamname="T">实体类</typeparam>
///<paramname="p_DataSet">DataSet</param>
///<paramname="p_TableIndex">待转换数据表索引</param>
///<returns>实体类</returns>
publicstaticTDataSetToEntity<T>(DataSetp_DataSet,intp_TableIndex)
{
if(p_DataSet==null||p_DataSet.Tables.Count<0)
returndefault(T);
if(p_TableIndex>p_DataSet.Tables.Count-1)
returndefault(T);
if(p_TableIndex<0)
p_TableIndex=0;
if(p_DataSet.Tables[p_TableIndex].Rows.Count<=0)
returndefault(T);
DataRowp_Data=p_DataSet.Tables[p_TableIndex].Rows[0]; //返回值初始化 T_t=(T)Activator.CreateInstance(typeof(T)); PropertyInfo[]propertys=_t.GetType().GetProperties(); foreach(PropertyInfopiinpropertys) { 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> ///<typeparamname="T">实体类</typeparam> ///<paramname="p_DataSet">DataSet</param> ///<paramname="p_TableIndex">待转换数据表索引</param> ///<returns>实体类列表</returns> publicstaticIList<T>DataSetToEntityList<T>(DataSetp_DataSet,intp_TableIndex) { if(p_DataSet==null||p_DataSet.Tables.Count<0) returndefault(IList<T>); if(p_TableIndex>p_DataSet.Tables.Count-1) returndefault(IList<T>); if(p_TableIndex<0) p_TableIndex=0; if(p_DataSet.Tables[p_TableIndex].Rows.Count<=0) returndefault(IList<T>);
DataTablep_Data=p_DataSet.Tables[p_TableIndex]; //返回值初始化 IList<T>result=newList<T>(); for(intj=0;j<p_Data.Rows.Count;j++) { T_t=(T)Activator.CreateInstance(typeof(T)); PropertyInfo[]propertys=_t.GetType().GetProperties(); foreach(PropertyInfopiinpropertys) { 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); } returnresult; }