我有一个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
答案 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();