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; }