DataTable行转列
/// <summary> /// DataTable行转列 /// </summary> /// <param name="sourcedt">源数据</param> /// <param name="columnList">列信息</param> /// <returns>转换之后的数据</returns> public static DataTable RevertRowToColumn(DataTable sourcedt, List<string> columnList) { DataTable dt = new DataTable(); List<string> tableCoumn = new List<string>(); foreach (var item in columnList) { //转换后的第一列名,以后此列每行存放sourcedt对应对应的每列列名 dt.Columns.Add(item, typeof(string)); } int l = sourcedt.Rows.Count - columnList.Count; if (l > 0) { //转换后的第一列名,以后此列每行存放sourcedt对应对应的每列列名 //int l = sourcedt.Rows.Count - columnList.Count; //dt.Columns.Add("COLUMN_NAME", typeof(string)); for (int i = 0; i <= l; i++) { tableCoumn.Add("VLAUE_" + (i + 1)); } } //dt添加Columns for (int i = 0; i < tableCoumn.Count; i++) { dt.Columns.Add(tableCoumn[i].ToString(), typeof(string));//统一按照string类型进行存放 } //对sourcedt进行转换 for (int j = 0; j < sourcedt.Columns.Count; j++) { DataRow dr = dt.NewRow(); string column_name = sourcedt.Columns[j].ColumnName; dr[0] = column_name;//把source的列名赋值给转换成行的第一列值 for (int i = 0; i < sourcedt.Rows.Count; i++) { string cell_value = sourcedt.Rows[i][column_name].ToString(); dr[i + 1] = cell_value; } dt.Rows.Add(dr); } return dt; }
使用:
// 行转列 DataTable table = Helpers.RevertRowToColumn(tableTemp, new List<string>() { "Key", "CName", "Attribute", "Value" });
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术