如何将多列转换为一列

如何将多列转换为一列

本文介绍了如何将多列转换为一列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述





我在将多个列转换为包含多行的单个列时遇到了一个问题。下面是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);
    }
}


这篇关于如何将多列转换为一列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-18 19:51