DataTable 轉置

摘要:DataTable 轉置

稍微翻一下msdn,DataTable好像沒有轉置,如果有麻煩告知我,謝謝。

近期寫了兩次DataTable轉置的程式碼,所幸假日將它寫成擴充方法,除了對DataTable做手腳或修改資料庫SQL外,不知道還有沒有辦法可以轉置資料。

    public static DataTable TransposeToDataTable(this DataTable vaule)
    {
        DataTable dt = vaule;
        DataTable NewDataTale = new DataTable();

        //原本DataTable列數
        int dtRowsCount = dt.Rows.Count;
        //原本DataTable欄數
        int dtColumnCount = dt.Columns.Count;
        //將原本DataTable的第一個欄位放入轉置後的第一欄
        NewDataTale.Columns.Add(dt.Columns[0].ToString(), typeof(string));
        //將原本DataTable的第一列轉置為轉置後的欄位
        for (int i = 0; i < dtRowsCount; i++)
        {
            NewDataTale.Columns.Add(dt.Rows[i][0].ToString(), typeof(string));
        }

        //將原本DataTable的欄位列依序轉置為轉置後的每一列
        //起始為1,因為原本第一列已經放置為欄位名稱,要從第二列開始跑起
        for (int s = 1; s < dtColumnCount; s++)
        {
            DataRow dr = NewDataTale.NewRow();
            dr[0] = dt.Columns[s].ToString();
            for (int i = 0; i < dtRowsCount; i++)
            {
                dr[i + 1] = dt.Rows[i][s].ToString();
            }
            NewDataTale.Rows.Add(dr);
        }

        return NewDataTale;
    }

 

 

如文章有錯誤,煩請告知,新人發帖請多包涵

 

創用 CC 授權條款