DATATABLE行转列

ContractedBlock.gif ExpandedBlockStart.gif 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;    
}  

转载于:https://www.cnblogs.com/z2002m/archive/2009/10/30/1592917.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值