将一个数据表中与另一个数据表具有相同列标题的行复制到另一个数据表

5
我有两个数据表,我想从一个表中复制一行到另一个表中。我尝试过这个方法,但是我的两个表并不完全相同,它们都有共同的表头,但第二个表有更多的列,因此我需要“智能”复制,即根据列标题名称复制行。
d1:
+--------+--------+--------+
|  ID    |  aaa   |  bbb   |
+--------+--------+--------+
|  23    | value1 | value2 |    <----copy this row

d2:

+--------+--------+--------+--------+
|  ID    |  ccc   |  bbb   |  aaa   |
+--------+--------+--------+--------+
|  23    |        | value2 | value1 |       <----I need this result

但是这段代码:
string rowID=23;
DataRow[] result = dt1.Select($"ID = {rowID}");
dt2.Rows.Add(result[0].ItemArray);

提供:

d2:

+--------+--------+--------+--------+
|  ID    |  ccc   |  bbb   |  aaa   |
+--------+--------+--------+--------+
|  23    | value1 | value2 |        |    <---- :( NOT what I need
1个回答

0

我认为这是你的作业,但是这里有一些简单而不是非常聪明的解决方案:

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;
}

还有更聪明和更好的解决方案,但这是快速编写的(2分钟)并且有效。请记住,您没有指定列数据类型或其他任何内容,因此我假设在创建简单示例时到处都是字符串。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接