/// <summary> /// 2010.1.21 将数据集旋转 Power by rovecat /// </summary> /// <param name="SourceDt">源数据集</param> /// <param name="KeyColIndex">可作列名的字段索引(该字段的值不重复)</param> /// <returns></returns> public static DataTable Revolve(DataTable SourceDt, int KeyColIndex) { DataTable dtRe = new DataTable(); //先将数据旋转 int i = 0; for (i = 0; i < SourceDt.Rows.Count; i++) { dtRe.Columns.Add("col" + i, typeof(string)); } for (i = 0; i < SourceDt.Columns.Count; i++) { DataRow dr = dtRe.NewRow(); for (int k = 0; k < SourceDt.Rows.Count; k++) { dr[k] = SourceDt.Rows[k][i].ToString(); } //添加数据 dtRe.Rows.Add(dr); } //备份原列名 dtRe.Columns.Add("col"); for (i = 0; i < dtRe.Rows.Count; i++) { dtRe.Rows[i]["col"] = SourceDt.Columns[i].ColumnName; } dtRe.Columns["col"].SetOrdinal(0); //重命名列名 for (i = 1; i < dtRe.Columns.Count; i++) { string colName = SourceDt.Rows[i - 1][KeyColIndex].ToString(); if (!dtRe.Columns.Contains(colName)) { dtRe.Columns[i].ColumnName = colName; } } //还原关键列名 dtRe.Columns["col"].ColumnName = SourceDt.Columns[KeyColIndex].ColumnName; //移出行 dtRe.Rows.Remove(dtRe.Rows[KeyColIndex]); return dtRe; } /// <summary> /// 2010.1.21 将数据集旋转 Power by rovecat /// </summary> /// <param name="SourceDt">源数据集</param> /// <param name="KeyColName">可作列名的字段名(该字段的值不重复)</param> /// <returns></returns> public static DataTable Revolve(DataTable SourceDt, string KeyColName) { if (SourceDt.Columns.Contains(KeyColName)) { int index = SourceDt.Columns[KeyColName].Ordinal; return Revolve(SourceDt, index); } else return SourceDt; } KKKKKKKK