一个DataTable的行列转换代码

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值