摘要: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;
}
如文章有錯誤,煩請告知,新人發帖請多包涵