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

use*_*116 2 c# datatable

我有两个DataTables

DataTable1(默认值) -

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

DataTable2(带实际值) -

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

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

slo*_*oth 7

只需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);
Run Code Online (Sandbox Code Playgroud)

dt1 现在看起来像:

在此输入图像描述