2014-02-24 24 views
2

我有兩個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的默認值和實際值的行。 我只需要第二個表中存在的特定標記的實際值,如果不是第一個表中的默認值。 我該怎麼做?

回答

4

只需在合併之前將一個主鍵約束添加到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

+0

謝謝你......那工作只是因爲我想.. – user2806116