问题起因:
扔给数据库一条select * from [表名] , 得到一个DataTable, 发现有一列status状态的DataColumn的类型是int,然后我想换成字典表里的文字描述,然后就vs就抛出异常,说int类型的列不能赋值string值; 然后我立马去修改列的类型为string类型;vs又抛出异常说已存在数据的列无法修改其类型.
于是苦思3分,得到如下转换代码,封装如下:
1 private static DataTable GetNewDataTable(DataTable dt) 2 { 3 var dt2 = new DataTable(); 4 foreach (DataColumn col in dt.Columns) 5 { 6 dt2.Columns.Add(new DataColumn(col.ColumnName, typeof(string))); 7 } 8 foreach (DataRow row in dt.Rows) 9 { 10 DataRow dr = dt2.NewRow(); 11 foreach (DataColumn col in dt2.Columns) 12 { 13 dr[col.ColumnName] = row[col.ColumnName]; 14 } 15 dt2.Rows.Add(dr); 16 } 17 return dt2; 18 }
欢迎分享!