[C#] DataTable行列轉置
將DataTable行列轉置
using System.Data;
public DataTable RevertRowToColumn(DataTable dtSource)
{
DataTable newDataTale = new DataTable();
//原本DataTable列數
int dtRowsCount = dtSource.Rows.Count;
//原本DataTable欄數
int dtColumnCount = dtSource.Columns.Count;
//將原本DataTable的第一個欄位放入轉置後的第一欄
newDataTale.Columns.Add(dtSource.Columns[0].ToString(), typeof(string));
//將原本DataTable的第一列轉置為轉置後的欄位
for (int i = 0; i < dtRowsCount; i++)
{
newDataTale.Columns.Add(dtSource.Rows[i][0].ToString(), typeof(string));
}
//將原本DataTable的欄位列依序轉置為轉置後的每一列
//起始為1,因為原本第一列已經放置為欄位名稱,要從第二列開始跑起
for (int s = 1; s < dtColumnCount; s++)
{
DataRow dr = newDataTale.NewRow();
dr[0] = dtSource.Columns[s].ToString();
for (int i = 0; i < dtRowsCount; i++)
{
dr[i + 1] = dtSource.Rows[i][s].ToString();
}
newDataTale.Rows.Add(dr);
}
newDataTale.TableName = "NEW_" + dtSource.TableName;//命名DataTable名稱
return newDataTale;
}
留言
張貼留言
歡迎留言