-
C# code
-
public static void Main()
{
DataTable dt = new DataTable();
dt.Columns.Add( " name " );
dt.Columns.Add( " type " );
dt.Columns.Add( " relt " );
for ( int i = 0 ; i < 4 ; i ++ )
{
DataRow dr = dt.NewRow();
dr[ " name " ] = " name " + i;
dr[ " type " ] = " type " + i;
dr[ " relt " ] = " relt " + i;
dt.Rows.Add(dr);
}
DisplayTable(dt);
Console.WriteLine( " /r/n =====> 进行行列转换 /r/n " );
DisplayTable(ColumnToRow(dt, 0 ));
Console.ReadLine();
}
public static DataTable ColumnToRow(DataTable src_dt, int columnIndex) // columnIndex 用来当作新列名的列
{
DataTable dt = new DataTable();
dt.Columns.Add(src_dt.Columns[columnIndex].ColumnName);
foreach (DataRow dr in src_dt.Rows)
dt.Columns.Add(dr[columnIndex].ToString());
int n = src_dt.Columns.Count;
for ( int i = 0 ; i < n; i ++ )
{
if (i == columnIndex) continue ; // 如果是被当作列名的列,则跳过
DataRow new_dr = dt.NewRow();
string columnName = src_dt.Columns[i].ColumnName;
new_dr[ 0 ] = columnName;
foreach (DataRow dr in src_dt.Rows)
{
string newColumnName = dr[columnIndex].ToString();
new_dr[newColumnName] = dr[columnName];
}
dt.Rows.Add(new_dr);
}
return dt;
}
打印的结果:
name type relt
name0 type0 relt0
name1 type1 relt1
name2 type2 relt2
name3 type3 relt3
=====> 进行行列转换
name name0 name1 name2 name3
type type0 type1 type2 type3
relt relt0 relt1 relt2 relt3