我有两个 DataTables:
DataTable1(带有默认值)-
标签 |别名|值 |类型 abc |"" |default|default xyz |"" |default|default
DataTable2(带有实际值)-
标签 |别名 |值 |类型 abc |test |12 |Real
现在,如果我使用 DataTable.Merge() ,我将获取标记abc的默认和实际值的行。
我需要仅获取第二个表中存在的特定标记的实际值,否则从第一个表获取默认值。如何实现这一点?
在合并之前,只需向 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
现在看起来像这样: