Reputation: 165
I have two DataTables both has same no of columns and column names.Am in need of comparing both for the different rows.Which means even if one cell doesnt match the row should be plotted.I tried with
table1.Merge(table2);
DataTable modified = table2.GetChanges();
But this is returning null.
Where as
IEnumerable<DataRow> added = table1.AsEnumerable().Except(table2.AsEnumerable());
This is returning the table1 values alone even there are different values for a some cells in table1 compared to table2.
Can anyone help me for this comparison.Various sites i referred,the instruction said was to compare each column in a row but since i have N no of columns i cant go with that.I need a smarter way of comparison which would be efficient.
Thanks in advance
Upvotes: 1
Views: 2649
Reputation: 900
IEnumerable<DataRow> added = table1.AsEnumerable().Except(table2.AsEnumerable());
should be changed to
IEnumerable<DataRow> added = table1.AsEnumerable().Except(table2.AsEnumerable(),DataRowComparer.Default);
Because DataRows don't know how to compare themselves to eachother on their own. You can also provide your own equality delegate instead of DataRowComparer.Default if required.
Upvotes: 2
Reputation: 116868
Have you tried using merge? http://msdn.microsoft.com/en-us/library/fk68ew7b.aspx
Datatable1.Merge(datatable2);
DataTable DataTable3 = Datatable2.GetChanges();
Upvotes: 0