C# DataTable行转列实现方法

本文介绍了一种使用C#实现的将DataTable中的行数据转换为列数据的方法。该方法首先获取原始DataTable的行数和列数,然后创建新的DataTable来存放转换后的数据,并通过循环遍历实现了数据的有效转换。
public DataTable RowsToCol(DataTable DT)
{
       try
        {  
                      int  rowCount=DT.Rows.Count;
                      int  columnsCount=DT.Columns.Count;
                      DataTable result=new DataTable();
                      DataTable RowsDT=new DataTable();
                      DataTable COLSDT=new DataTable();
                      for(int i=0;i<RowCount;i++)
                      {
                              result.Columns.Add(DT.Rows[i][1].ToString());
                              RowsDT.Columns.Add(DT.Rows[i][1].ToString());
                              COLsDT.Columns.Add(DT.Rows[i][1].ToString());
                      }
                      string[] RowsName=new string[columnsCount];
                      for(int i=0;i<columnsCount;i++)
                      {                           
                      RowsName[i]=DT.Columns[i].ColumnName.Tostring();
                      }
                      for(int rowsi=0;rowsi<RowsName.Length;rowsi)
                      {
                      RowsDT.Rows.Add(new string[] {RowsName[rowsi]});
                      }
                      //行转列的核心部分
                      for(int columnsi=0;columnsi<columnsCount;columnsi++)
                      {
                           DataRow dr=COLsDT.NewRow();
                           for(int rowj=0;rowj<rowCount;rowj++)
                           {
                                  dr[rowj]=DT.Rows[rowj][columnsi].toString();
                           }
                           COLsDT.Rows.Add(dr);
                      }
                      
             for(int columnsi=0;columnsi<columnsCount;columnsi++)
             {
                 DataRow resultdr=result.NewRow();
                 for(int rowj=0;rowj<rowCount;rowj++)
                 {
                    if(rowj==0)
                     {
                       resultdr[rowj]=RowsDT.Rows[columnsi][0].ToString();
                     }
                     else
                     {
                      resultdr[rowj]=ColsDT.Rows[columnsi][rowj].ToString();
                      }
                  }
                 result.Rows.Add(resultdr);
            }
            
            return   result;
       }
       catch(Exception ex)
       {
            throw new Exception(ex.ToString());
       }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明仔丶

谢谢大家

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值