前日经理交付我一任务,将如下表格转换成纵向显示:
id name age1 张三 182 李四 20
转换成:
id 1 2name 张三 李四age 18 20
冥思苦想,终得正果,代码如下:
View Code 1 public DataSet RowConvertColumn(DataSet dataSet) 2 { 3 DataTable dataTable = dataSet.Tables[0]; 4 DataSet resultDs = new DataSet(); 5 DataTable resultDt = new DataTable(); 6 //建列 7 DataColumn resultDc1 = new DataColumn(); 8 resultDc1.ColumnName = dataTable.Columns[0].ColumnName; 9 resultDt.Columns.Add(resultDc1);10 foreach (DataRow item in dataTable.Rows)11 {12 DataColumn resultDc2 = new DataColumn();13 resultDc2.ColumnName = item[0].ToString();14 resultDt.Columns.Add(resultDc2);15 }16 //建行17 for (int k = 1; k < dataTable.Columns.Count; k++)18 {19 DataRow resultDr = resultDt.NewRow();20 for (int i = 0; i < resultDt.Columns.Count; i++)21 {22 if (i == 0)23 {24 resultDr[i] = dataTable.Columns[k].ColumnName;25 }26 else27 {28 resultDr[i] = dataTable.Rows[i - 1][k].ToString();29 }30 }31 resultDt.Rows.Add(resultDr);32 }33 resultDs.Tables.Add(resultDt);34 35 return resultDs;36 }后又觉得的美中不足:不能自定义列名,重载一下,增加一个字符串数组 参数来保存列名
View Code 1 //把行转换成列,提供一个列名数组 2 public DataSet RowConvertColumn(DataSet dataSet, string[] columns) 3 { 4 //验证数组长度与dataSet列数是否相等 5 if (dataSet.Tables[0].Columns.Count != columns.Length) 6 { 7 return null; 8 } 9 DataTable dataTable = dataSet.Tables[0];10 DataSet resultDs = new DataSet();11 DataTable resultDt = new DataTable();12 //建列13 DataColumn resultDc1 = new DataColumn();14 resultDc1.ColumnName = columns[0];15 resultDt.Columns.Add(resultDc1);16 foreach (DataRow item in dataTable.Rows)17 {18 DataColumn resultDc2 = new DataColumn();19 resultDc2.ColumnName = item[0].ToString();20 resultDt.Columns.Add(resultDc2);21 }22 //建行23 for (int k = 1; k < dataTable.Columns.Count; k++)24 {25 DataRow resultDr = resultDt.NewRow();26 for (int i = 0; i < resultDt.Columns.Count; i++)27 {28 if (i == 0)29 {30 resultDr[i] = columns[k];31 }32 else33 {34 resultDr[i] = dataTable.Rows[i - 1][k].ToString();35 }36 }37 resultDt.Rows.Add(resultDr);38 }39 resultDs.Tables.Add(resultDt);40 41 return resultDs;42 }注意保证数组长度与表的列数相等,否则返回null。作者:王亚峰出处:http://www.cnblogs.com/wyfblog本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
转载于:https://www.cnblogs.com/wyfblog/archive/2011/09/21/2184144.html
