我有一个如下所示的DataTable:
我想将上表转置如下:
我可以使用以下代码来显示Header值:
DataTable outputTable = new DataTable();
outputTable.Columns.Add(inputTable.Columns[0].ColumnName.ToString());
int rCount = 0;
foreach (DataRow inRow in inputTable.Rows)
{
string DescColName = inRow[1].ToString();
string maxColName = "MaxValue";
string valColName = "Status";
outputTable.Columns.Add(DescColName);
outputTable.Columns.Add(maxColName);
outputTable.Columns.Add(valColName);
}
我正在尝试以下代码来填充失败的行。
for (int rCount = 0; rCount <= inputTable.Columns.Count - 1; rCount++)
{
DataRow newRow = outputTable.NewRow();
for (int cCount = 0; cCount <= inputTable.Rows.Count - 1; cCount++)
{
string colValue = inputTable.Rows[cCount][rCount].ToString();
newRow[cCount] = colValue;
}
outputTable.Rows.Add(newRow);
}
答案 0 :(得分:0)
我想我明白为什么会失败。
在第二段代码中,如果在这些行上跟踪rCount
和cCount
:
string colValue = inputTable.Rows[cCount][rCount].ToString();
newRow[cCount] = colValue;
结果数据表的样子是
02/18/2014 | 02/18/2014 | 02/18/2014 | 02/19/2014 | 02/19/2014 | 02/19/2014 | ... //and on and on
Tire Alignment | Oil Change | Air Filter| Tire Alignment | Oil Change | Air Filter| ... //and on and on
等。因此,如果inputTable中的行数多于outputTable中的列数,则cCount
会在某个时间点超过newRow
中的可用列数。我怀疑这是导致错误的原因。不幸的是,为了计算具有相同报告日期的多行,我担心您可能需要重新编写整个解决方案。