Datatable行转列方法

实现方法

  private DataTable SwapTable(DataTable tableData)
        {
            //获取table的行
            int intRows = tableData.Rows.Count;
           //获取table的列
            int intColumns = tableData.Columns.Count;

            //转二维数组
            string[,] arrayData = new string[intRows, intColumns];
            for (int i = 0; i < intRows; i++)
            {
                for (int j = 0; j < intColumns; j++)
                {
                    arrayData[i, j] = tableData.Rows[i][j].ToString();
                }
            }
            //下标对换
            string[,] arrSwap = new string[intColumns, intRows];
            for (int m = 0; m < intColumns; m++)
            {
                for (int n = 0; n < intRows; n++)
                {
                    arrSwap[m, n] = arrayData[n, m];
                }
            }
            DataTable dt = new DataTable();
            //添加列
            for (int k = 0; k < intRows; k++)
            {
                dt.Columns.Add(
                        new DataColumn(arrSwap[0, k])
                    );
            }
            //添加行
            for (int r = 1; r < intColumns; r++)
            {
                DataRow dr = dt.NewRow();
                for (int c = 0; c < intRows; c++)
                {
                    dr[c] = arrSwap[r, c].ToString();
                }
                dt.Rows.Add(dr);
            }
            //添加行头
            DataColumn ColRowHead = new DataColumn(tableData.Columns[0].ColumnName);
            dt.Columns.Add(ColRowHead);
            dt.Columns[ColRowHead.ColumnName].SetOrdinal(0);
            for (int i = 0; i < intColumns - 1; i++)
            {
                dt.Rows[i][ColRowHead.ColumnName] = tableData.Columns[i + 1].ColumnName;
            }
            return dt;
        }

posted @ 2021-12-07 14:18  原往  阅读(421)  评论(0)    收藏  举报