博客园  :: 首页  :: 联系 :: 订阅 订阅  :: 管理

交换DataTable中的行列位置

Posted on 2009-11-22 16:25  生鱼片  阅读(1930)  评论(4编辑  收藏  举报

比如我们在数据库中取出的数据放到DataTable中如下:

标题 列一 列二 列三
行一 34 23 65
行二 67 56 89

 

行列交换后得到的数据为:

标题 行一 行二
列一 34 67
列二 23 56
列三 65 89


下面是交换的函数,代码如下:

private DataTable SwapDTCR(DataTable inputDT)
        {
            DataTable outputDT = new DataTable();

            //标题的位置不变
            outputDT.Columns.Add(inputDT.Columns[0].ColumnName.ToString());
            
            foreach (DataRow inRow in inputDT.Rows)
            {
                string newColName = inRow[0].ToString();
                outputDT.Columns.Add(newColName);
            }
                
            for (int rCount = 1; rCount <= inputDT.Columns.Count - 1; rCount++)
            {
                DataRow newRow = outputDT.NewRow();
               
                newRow[0] = inputDT.Columns[rCount].ColumnName.ToString();
                for (int cCount = 0; cCount <= inputDT.Rows.Count - 1; cCount++)
                {
                    string colValue = inputDT.Rows[cCount][rCount].ToString();
                    newRow[cCount + 1] = colValue;
                }
                outputDT.Rows.Add(newRow);
            }
            return outputDT;
        }