问题描述
我在将多个列转换为包含多行的单个列时遇到了一个问题。下面是C#中预期的问题结构和输出。
输入数据表
PersonId代码1代码2代码3文本1文本2文本3 LOC 1 LOC 2 LOC 3
1 CD1 CD2 CD3 TE1 TE2 TE3 LO1 LO2 LO3
输出数据表
PersonId代码文本LOC
1 CD1 TE1 LO1
1 CD2 TE2 LO2
1 CD3 TE3 LO3
我找不到任何能解决类似问题的文章。
我尝试了什么:
我尝试使用for循环,但for循环正在嵌套。
在一个for循环中有3个循环用于3列。
我们可以制作一些泛型方法?
Hi,
I am facing one problem in transposing multiple columns into a single column with multiple rows. Below is the problem structure and output expected in C#.
Input DataTable
PersonId Code 1Code 2Code 3Text 1Text 2Text 3LOC 1LOC 2LOC 3
1 CD1CD2CD3TE1TE2TE3LO1LO2LO3
OUTPUT DataTable
PersonId CodeTextLOC
1 CD1TE1LO1
1 CD2TE2LO2
1 CD3TE3LO3
I couldn't find any article which is giving solution for similar problem.
What I have tried:
I tried using for loop but for loops are getting nested.
Inside one for loop there are 3 for loops for 3 columns.
Can we make some generic method ?
推荐答案
DataTable outputTable = inputTable.Clone(); // copies the schema (columns)
// todo: remove the columns Code2, Code3, Text2, etc. from outputTable
foreach(DataRow inputRow in inputTable.Rows)
{
for (int i=0; i<3; i++)
{
DataRow newRow = outputTable.NewRow();
newRow[0] = inputRow[0];
newRow[1] = inputRow[1 + i];
newRow[2] = inputRow[4 + i];
newRow[3] = inputRow[7 + i];
outputTable.Rows.Add(newRow);
}
}
这篇关于如何将多列转换为一列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!