Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Compare two DataTables to determine rows in one but not the other

Tags:

c#

datatable

I have two DataTables, A and B, produced from CSV files. I need to be able to check which rows exist in B that do not exist in A.

Is there a way to do some sort of query to show the different rows or would I have to iterate through each row on each DataTable to check if they are the same? The latter option seems to be very intensive if the tables become large.

like image 685
Jon Avatar asked Oct 02 '08 19:10

Jon


1 Answers

Assuming you have an ID column which is of an appropriate type (i.e. gives a hashcode and implements equality) - string in this example, which is slightly pseudocode because I'm not that familiar with DataTables and don't have time to look it all up just now :)

IEnumerable<string> idsInA = tableA.AsEnumerable().Select(row => (string)row["ID"]);
IEnumerable<string> idsInB = tableB.AsEnumerable().Select(row => (string)row["ID"]);
IEnumerable<string> bNotA = idsInB.Except(idsInA);
like image 97
Jon Skeet Avatar answered Sep 27 '22 20:09

Jon Skeet