DataTable行列转置,实现横向显示数据记录
城市 | 员工人数 |
成都 | 10 |
深圳 | 8 |
北京 | 9 |
上海 | 3 |
大连 | 6
|
横向
城市 | 成都 | 深圳 | 北京 | 上海 | 大连 |
员工人数 | 10 | 8 | 9 | 3 | 6 |
以前早就遇到过需要横向显示数据记录的问题,但都用其他方法敷衍过去了,今天又遇到这个问题。心里不是滋味,狠了一下心,决定想想怎么实现。
最后还是决定在datatable中进行行列的转置,所以先将您的数据都填充到datatable中。
假设您的原始datatale是dt,在dt后加入下面的语句
DataTable dtNew = new DataTable();
dtNew.Columns.Add("ColumnName", typeof(string));
for (int i = 0; i < dt.Rows.Count; i++)
{
dtNew.Columns.Add("Column" + (i + 1).ToString(), typeof(string));
}
foreach (DataColumn dc in dt.Columns)
{
DataRow drNew = dtNew.NewRow();
drNew["ColumnName"] = dc.ColumnName;
for (int i = 0; i < dt.Rows.Count; i++)
{
drNew[i + 1] = dt.Rows[i][dc].ToString();
}
dtNew.Rows.Add(drNew);
}
经过上面的语句,您的dt就已经成功转置了,你可以直接用它作为datagrid 或者gridview的数据源。