一个DataTable的行列转换代码

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值