Here is just another solution using LINQ that would look for each row in second table and not include it in first table:

`dt1.AsEnumerable.Where(Function(r1) dt2.AsEnumerable.Where(Function(r2) r2(0).ToString.Trim = r1(0).ToString.Trim ).ToArray.Count = 0 ).CopyToDataTable`

0 index can be replace with “columnname” if desired, and for multiple criteria to match the row up, you can use AND, like `r2(0).ToString.Trim = r1(0).ToString.Trim And r2(1).ToString.Trim = r1(1).ToString.Trim`

Alternatively, you can use .ItemArray to compare the rows, assuming the rows will have identical values.

`dt1.AsEnumerable.Where(Function(r1) dt2.AsEnumerable.Where(Function(r2) String.Join(",",r2.ItemArray) = String.Join(",",r1.ItemArray) ).ToArray.Count = 0 ).CopyToDataTable`