There is no real way to compare any two lists without a loop: even Linq uses a loop, though it is hidden from direct sight.
Strictly speaking, this will return rows that are unique to one DT:
var dif1 = dt1.AsEnumerable().Except(dt2.AsEnumerable());
But...it probably isn't any real use to you, because it directly compare the rows, and that doesn't mean that the row contents are different, just that they are the same rows.
Probably what you are really going to want to do is decide what element of the row makes it "unique" and do a comparison based on that column in each table.