c# - 转置数据表

标签 c# datatable transpose

我有下面的数据表。我想更改数据表,将数据表转换为旁边的数据表。我该怎么做?

我想要这样做的原因是因为 excel 文件将数据放入如图所示,然后我想在第 1 行对这些数据进行排序

当前表

      || Col 1 || Col 2 || Col 3
____________________________________    
Row 1 || 10    ||  20   || 30
Row 2 || 1     ||  2    || 3 

新建数据表

      || Row 1 || Row 2 
Col 1 ||  10   ||   1
Col 2 ||  20   ||   2
Col 3 ||  30   ||   3

最佳答案

.NET 不包含转置数据表的方法。你必须自己做。 This网站有一个关于示例转置方法的教程。我将复制并粘贴以下代码片段:

private DataTable Transpose(DataTable dt)
{
    DataTable dtNew = new DataTable();

    //adding columns    
    for(int i=0; i<=dt.Rows.Count; i++)
    {
       dtNew.Columns.Add(i.ToString());
    }



    //Changing Column Captions: 
    dtNew.Columns[0].ColumnName = " ";

     for(int i=0; i<dt.Rows.Count; i++) 
     {
      //For dateTime columns use like below
       dtNew.Columns[i+1].ColumnName = Convert.ToDateTime(dt.Rows[i].ItemArray[0].ToString()).ToString("MM/dd/yyyy");
      //Else just assign the ItermArry[0] to the columnName prooperty
     }

    //Adding Row Data
    for(int k=1; k<dt.Columns.Count; k++)
    {
        DataRow r = dtNew.NewRow();
        r[0] = dt.Columns[k].ToString(); 
        for(int j=1; j<=dt.Rows.Count; j++)
        r[j] = dt.Rows[j-1][k];  
        dtNew.Rows.Add(r);
    }

 return dtNew;
}

关于c# - 转置数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14817061/

相关文章:

c - 如何在 C 语言中转置二维矩阵?

r - 如何在 R 中使用 princomp() 或 prcomp() 函数处理大型数据集,而不转置数据?

c# - Glass Mapper v4 InferType Cast 问题

c# - 如何转换 System.IO.Stream 中的 System.Byte[]?

c# - 清除DataTable中的多个列值

java - 数据表不显示值

java - 读取二维数组并转置

c# - Roslyn SyntaxTree 更改注入(inject)

c# - BackgroundTask UWP Windows 10 TimeTriggeredTask 示例已注册但从未启动

c# - 指定数据表中的列