一个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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值