C# DataGrid将所有列数据查看到一列中

C# DataGrid将所有列数据查看到一列中,c#,winforms,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

我有一个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

一个简单的循环将解决这个问题。请参见下面的输出

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

如果需要使用源数据表(不是SQL)执行此操作,可以使用LINQ按列extact行值:

命名源数据表和目标数据表:

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();
var dt2=新数据表(“数据表2”);
Add(newdatacolumn(“Col1”){DataType=typeof(int)});
dt1.Columns.OfType().SelectMany((col,idx)=>
dt1.Rows.OfType().Select(row=>dt2.Rows.Add(row.ItemArray[idx])).ToList();

数据来自哪里?如何填充DataGridView?数据从单个sql查询到单个列,因此每个列有不同的sql查询?不,只有一个datatable包含多个列,需要在一列中推送到新datatable中。GuidoG:是的,每个列有不同的查询