各位帮忙看一下下面这段代码
下面这段代码在vs2003   下面运行没有错误,而在vs2005下面运行报错。 
 这句话“   myDataRow[i]=   dataReader[i].ToString();”报“值类型与列类型不匹配不能在   DocID   列中存储    <312> 。所需类型是   DataRow。   --->    
System.ArgumentException:   值类型与列类型不匹配” 
    ///   将DataReader   转为   DataTable 
 		///    </summary>  
 		///    <param   name= "DataReader "> DataReader </param>  
 public   static   DataTable   ConvertDataReaderToDataTable(SqlDataReader   dataReader) 
 		{ 
 			DataTable   datatable   =   new   DataTable(); 
 			DataTable   schemaTable   =   dataReader.GetSchemaTable(); 
 			//动态添加列    
 			try 
 			{  			 
 				foreach(DataRow   myRow   in   schemaTable.Rows) 
 				{ 
 					DataColumn   myDataColumn   =   new   DataColumn(); 
 					myDataColumn.DataType	=   myRow.GetType(); 
 					myDataColumn.ColumnName   =   myRow[0].ToString(); 
 					datatable.Columns.Add(myDataColumn); 
 				} 
 				//添加数据 
 				while(dataReader.Read()) 
 				{ 
 					DataRow   myDataRow   =   datatable.NewRow(); 
 					for(int   i=0;i <schemaTable.Rows.Count;i++) 
 					{ 
                                                                         myDataRow[i]=   dataReader[i].ToString(); 
 					} 
 					datatable.Rows.Add(myDataRow); 
 					myDataRow   =   null; 
 				} 
 				schemaTable   =   null; 
 				dataReader.Close(); 
 				return   datatable; 
 			} 
 			catch(Exception   ex) 
 			{ 
 				Error.Log(ex.ToString()); 
 				throw   new   Exception( "转换出错出错! ",ex); 
 			}  			 
 		}
------解决方案--------------------myDataColumn.DataType= myRow.GetType(); 
 问题出在这里吧?? 
 myRow.GetType()是DataRow
------解决方案--------------------myDataColumn.DataType= myRow.GetType();这句错误 
 myRow.GetType()返回的是typeof(DataRow); 
 应该使用 
 myDataColumn.DataType= (Type)myRow[ "DataType "];