Question

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

Was it helpful?

Solution

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.

OTHER TIPS

Have you tried using merge? http://msdn.microsoft.com/en-us/library/fk68ew7b.aspx

Datatable1.Merge(datatable2);
DataTable DataTable3 = Datatable2.GetChanges();
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top