合并两个 DataTable 并去除某一列中的重复值

5

我有两个 DataTables:

DataTable1(带有默认值)-

标签 |别名|值  |类型
abc |""   |default|default
xyz |""   |default|default

DataTable2(带有实际值)-

标签 |别名 |值  |类型
abc |test  |12    |Real

现在,如果我使用 DataTable.Merge() ,我将获取标记abc的默认和实际值的行。

我需要仅获取第二个表中存在的特定标记的实际值,否则从第一个表获取默认值。如何实现这一点?

1个回答

10

在合并之前,只需向 Tag 列添加一个主键约束即可。

示例:

var dt1 = new DataTable();
var prime1 = dt1.Columns.Add("Tag", typeof(string));
dt1.Columns.Add("Value", typeof(string));
dt1.Rows.Add(new object[]{"abc", "default"});
dt1.Rows.Add(new object[]{"xyz", "default"});
dt1.PrimaryKey = new DataColumn[]{ prime1 };

var dt2 = new DataTable();
var prime2 = dt2.Columns.Add("Tag", typeof(string));
dt2.Columns.Add("Value", typeof(string));
dt2.Rows.Add(new object[]{"abc", "12"});
dt2.PrimaryKey = new DataColumn[]{ prime2 };

dt1.Merge(dt2);

dt1现在看起来像这样:

enter image description here


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