Transponer un DataTable C#

Esta es una función muy útil si en algún momento necesitamos transponer los datos de un DataTable, recibe como parámetro un DataTable y devuelve otro DataTable.

private DataTable GenerateTransposedTable(DataTable inputTable)
{
     DataTable outputTable = new DataTable();

     // Se agregan las columnas haciendo un ciclo para cada fila

     // El encabezado de la primera columna es el mismo. 
     outputTable.Columns.Add(inputTable.Columns[0].ColumnName.ToString());

     // El encabezado para las demas columnas
     foreach (DataRow inRow in inputTable.Rows)
     {
         string newColName = inRow[0].ToString();
         outputTable.Columns.Add(newColName);
     }

     // Se agregan las columnas por cada renglón        
     for (int rCount = 1; rCount <= inputTable.Columns.Count - 1; rCount++)
     {
         DataRow newRow = outputTable.NewRow();

          newRow[0] = inputTable.Columns[rCount].ColumnName.ToString();
         for (int cCount = 0; cCount <= inputTable.Rows.Count - 1; cCount++)
         {
             string colValue = inputTable.Rows[cCount][rCount].ToString();
             newRow[cCount + 1] = colValue;
         }
         outputTable.Rows.Add(newRow);
     }

     return outputTable;
}

Fuente : http://www.codeproject.com/Articles/44274/Transpose-a-DataTable-using-C 


Leave a Reply

Your email address will not be published.

Para evitar SPAM realiza la siguiente operación: *