Dev*_*evy 5 c# wpf datatable winforms
我有两个数据表,我试图将行从一个表复制到另一个表,我试过这个.问题是我的表格不完全相同,两个表都有公共标题,但是第二个表有更多列,因此我需要"智能"复制,即根据列标题名称复制行.
D1:
+--------+--------+--------+
| ID | aaa | bbb |
+--------+--------+--------+
| 23 | value1 | value2 | <----copy this row
Run Code Online (Sandbox Code Playgroud)
D2:
+--------+--------+--------+--------+
| ID | ccc | bbb | aaa |
+--------+--------+--------+--------+
| 23 | | value2 | value1 | <----I need this result
Run Code Online (Sandbox Code Playgroud)
但是这段代码:
string rowID=23;
DataRow[] result = dt1.Select($"ID = {rowID}");
dt2.Rows.Add(result[0].ItemArray);
Run Code Online (Sandbox Code Playgroud)
得到:
D2:
+--------+--------+--------+--------+
| ID | ccc | bbb | aaa |
+--------+--------+--------+--------+
| 23 | value1 | value2 | | <---- :( NOT what I need
Run Code Online (Sandbox Code Playgroud)
我认为这是你的作业,但这里你有一些简单但不是很聪明的解决方案:
private DataTable DTCopySample()
{
int cnt = 0;
DataTable dt1 = new DataTable();
dt1.Columns.Add("ID");
dt1.Columns.Add("aaa");
dt1.Columns.Add("bbb");
DataTable dt2 = new DataTable();
dt2.Columns.Add("ID");
dt2.Columns.Add("ccc");
dt2.Columns.Add("bbb");
dt2.Columns.Add("aaa");
dt1.Rows.Add();
dt1.Rows[0]["ID"] = "23";
dt1.Rows[0]["aaa"] = "val1";
dt1.Rows[0]["bbb"] = "val2";
dt1.Rows.Add();
dt1.Rows[1]["ID"] = "99";
dt1.Rows[1]["aaa"] = "val99";
dt1.Rows[1]["bbb"] = "val98";
string colName = string.Empty;
foreach (DataRow row in dt1.Rows)
{
dt2.Rows.Add();
foreach (DataColumn col in dt1.Columns)
{
dt2.Rows[cnt][col.ColumnName] = row[col.ColumnName].ToString();
}
cnt++;
}
return dt2;
}
Run Code Online (Sandbox Code Playgroud)
有更智能、更好的解决方案,但这是快速编写的(2 分钟)并且有效。请记住,您尚未指定列数据类型或其他任何内容,因此我假设到处都有用于创建简单示例的字符串。
| 归档时间: |
|
| 查看次数: |
43 次 |
| 最近记录: |