DataGridview将所有列数据合并到一个列中

时间:2019-05-21 08:57:47

标签: c# winforms

我有一个datagridview,有5列。我希望一列中有5列数据。示例:-

Datatable1      Datatable2

A   B   C   D   New Coln 
10  11  21  31  10
11  12  22  32  11
12  13  23  33  12
13  14  24  34  13
14  15  25  35  14
                11
                12
                13
                14
                15
                21
                22
                23
                24
                25
                31
                32
                33
                34
                35

2 个答案:

答案 0 :(得分:0)

一个简单的循环将解决此问题。看到以下输出

DataTable table = new DataTable();
table.Columns.Add("col1", typeof(int));
table.Columns.Add("col2", typeof(int));
table.Columns.Add("col3", typeof(int));
table.Columns.Add("col4", typeof(int));

table.Rows.Add(25 ,10,2,10);
table.Rows.Add(22, 11, 12, 14);
table.Rows.Add(13, 22, 3, 55);
table.Rows.Add(3, 4, 12, 5);

DataTable table2 = new DataTable();
table2.Columns.Add("col1", typeof(int));

foreach (DataRow row in table.Rows)
{
  foreach (DataColumn col in table.Columns)
  {
    table2.Rows.Add(int.Parse((row[col].ToString())));
  }
}

结果

25
10
2
10
22
11
12
14
13
22
3
55
3
4
12
5

答案 1 :(得分:0)

如果需要使用源数据表(而非SQL)执行此操作,则可以使用LINQ来按列来扩展行数:

命名 dt1 源数据表,并 dt2 目标数据表:

var dt2 = new DataTable("DataTable2");
dt2.Columns.Add(new DataColumn("Col1") { DataType = typeof(int) });

dt1.Columns.OfType<DataColumn>().SelectMany((col, idx) =>
    dt1.Rows.OfType<DataRow>().Select(row => dt2.Rows.Add(row.ItemArray[idx]))).ToList();