合并两个DataTable,而不包含列的重复值

时间:2014-02-24 05:21:53

标签: c# datatable

我有两个DataTable,比如

DataTable1(使用默认值) -

Tag |Alias|Value  |Type
abc |""   |default|default
xyz |""   |default|default

DataTable2(具有实际值) -

Tag |Alias |Value  |Type
abc |test  |12    |Real

现在,如果我使用DataTable.Merge(),我会得到包含标签abc的默认值和实际值的行。 我只需要第二个表中存在的特定标记的实际值,如果不是第一个表中的默认值。 我该怎么做?

1 个答案:

答案 0 :(得分:6)

在合并之前,只需向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