繁体字互相转换:DataSet与泛型集合间的互相转换来源: 发布时间:星期四, 2009年2月12日 浏览:157次 评论:0
在网上曾经看到 ![]() ![]() ![]() ![]() ![]() ![]() ![]() 基本思路 利用反射机制将DataTable ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 代码介绍说明 /// <summary> /// 泛型集合和DataSet互相转换 /// </summary> public ![]() { /// <summary> /// 集合装换DataSet /// </summary> /// <param name="list">集合</param> /// < ![]() ![]() /// 2008-08-01 22:08 HPDV2806 public ![]() { DataSet result = ![]() ![]() DataTable _DataTable = ![]() ![]() ![]() { PropertyInfo ![]() ![]() ![]() foreach ( PropertyInfo pi in propertys ) { _DataTable.Columns.Add( pi.Name, pi.PropertyType ); } for ( ![]() ![]() { ArrayList tempList = ![]() ![]() foreach ( PropertyInfo pi in propertys ) { object obj = pi.GetValue( p_List[i], null ); tempList.Add( obj ); } object ![]() ![]() _DataTable.LoadDataRow( } } result.Tables.Add( _DataTable ); ![]() } /// <summary> /// 泛型集合转换DataSet /// </summary> /// <typeparam name="T"></typeparam> /// <param name="list">泛型集合</param> /// < ![]() ![]() /// 2008-08-01 22:43 HPDV2806 public ![]() { ![]() } /// <summary> /// 泛型集合转换DataSet /// </summary> /// <typeparam name="T"></typeparam> /// <param name="p_List">泛型集合</param> /// <param name="p_PropertyName">待转换属性名 ![]() /// < ![]() ![]() /// 2008-08-01 22:44 HPDV2806 public ![]() ![]() ![]() { List< ![]() ![]() ![]() ![]() ![]() propertyNameList.AddRange( p_PropertyName ); DataSet result = ![]() ![]() DataTable _DataTable = ![]() ![]() ![]() { PropertyInfo ![]() ![]() ![]() foreach ( PropertyInfo pi in propertys ) { ![]() ![]() { // 没有指定属性 ![]() _DataTable.Columns.Add( pi.Name, pi.PropertyType ); } ![]() { ![]() _DataTable.Columns.Add( pi.Name, pi.PropertyType ); } } for ( ![]() ![]() { ArrayList tempList = ![]() ![]() foreach ( PropertyInfo pi in propertys ) { ![]() ![]() { object obj = pi.GetValue( p_List[i], null ); tempList.Add( obj ); } ![]() { ![]() { object obj = pi.GetValue( p_List[i], null ); tempList.Add( obj ); } } } object ![]() ![]() _DataTable.LoadDataRow( } } result.Tables.Add( _DataTable ); ![]() } /// <summary> /// DataSet装换为泛型集合 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="p_DataSet">DataSet</param> /// <param name="p_TableIndex">待转换数据表索引</param> /// < ![]() ![]() /// 2008-08-01 22:46 HPDV2806 public ![]() ![]() { ![]() ![]() ![]() ![]() ![]() ![]() p_TableIndex = 0; DataTable p_Data = p_DataSet.Tables[p_TableIndex]; // 返回值 ![]() IList<T> result = ![]() ![]() for ( ![]() ![]() { T _t = (T)Activator.CreateInstance( typeof( T ) ); PropertyInfo ![]() ![]() ![]() foreach ( PropertyInfo pi in propertys ) { for ( ![]() ![]() { // 属性和字段名称 ![]() ![]() ![]() { // 数据库NULL值单独处理 ![]() pi.SetValue( _t, p_Data.Rows[j][i], null ); ![]() pi.SetValue( _t, null, null ); ![]() } } } result.Add( _t ); } ![]() } /// <summary> /// DataSet装换为泛型集合 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="p_DataSet">DataSet</param> /// <param name="p_TableName">待转换数据表名称</param> /// < ![]() ![]() /// 2008-08-01 22:47 HPDV2806 public ![]() ![]() { ![]() ![]() ![]() ![]() ![]() ![]() ![]() for ( ![]() ![]() { // 获取Table名称在Tables集合中 ![]() ![]() { _TableIndex = i; ![]() } } ![]() } } 使用范围 1. 可以用在业务层中数据获取 ![]() ![]() ![]() ![]() 2. 在WebServices中传输自定义类型使用 ![]() ![]() ![]() ![]() 0
相关文章读者评论发表评论 |