Merge two DataTables without duplicate values for a column
c#, datatable
Solution
Just add a primary key constraint to the `Tag` column before merging.
Example:
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` now looks like:
Problem
I have two DataTables like DataTable1(With default values)- ``` Tag |Alias|Value |Type abc |"" |default|default xyz |"" |default|default ``` DataTable2(With actual values)- ``` Tag |Alias |Value |Type abc |test |12 |Real ``` Now if I use DataTable.Merge() I get the rows with both default and actual values for tag abc. I need only the actual values for a particular tag present in 2nd table, if not the default values from 1st table. How do i do this?