Όχι δεν έχει κάποιο compare method γιατί είναι πολύ σχετικό τι θέλει να κάνει ο καθένας compare... Μιας και δεν εξηγείς τι ακριβώς θέλεις να κάνεις, θα σου δώσω μερικές πληροφορίες σχετικά με τους μηχανισμούς που παρέχει το Dataset για να κάνει track τις αλλαγές και ανάλογα βλέπεις τι μπορεί να σου χρησιμεύει και πως...
Το HasChanges method είναι ένας από τους τρόπους να δείς αν έχει αλλάξει το dataset. Από εκεί και πέρα, μπορείς με το GetChanges method (είτε στο dataset, είτε στο datatable) να πάρεις τι αλλαγές και να τις χειριστείς.
Τόσο το HasChanges, όσο και το GetChanges μπορούν να δεχθούν μία παράμετρο τύπου DataRowState. Τι είναι αυτό; Είναι ένα enumeration με τιμές όπως DataRowState.Added, DataRowState.Deleted, κλπ (δες MSDN) όπου πλέον σου επιτρέπει να ρωτήσεις αν έχει αλλαγές ενός συγκεκριμένου τύπου (πχ inserts ή deletes ανάλογα).
Αντίστοιχα, το GetChanges επιστρέφει ένα υποσύνολο του object πάνω στο οποίο καλείται και αν περάσεις και το DataRowState τότε το υποσύνολο είναι ενός (ή παραπάνω, ανάλογα τι θα περάσεις) τύπου, πχ. όλες οι εγγραφές που έχουν γίνει update.
Επίσης, υπάρχει και το DataTable.Select method το οποίο μπορεί προαιρετικά να δεχθεί μια DataRowState παράμετρο. Αυτό το method επιστρέφει ένα array από DataRow objects.
Τέλος, μην ξεχνάς ότι πάντοτε για κάθε DataRow ενός DataTable κρατάς ταυτόχρονα όλες τις versions (τρέχουσα, αρχική, κλπ) και έτσι μπορείς να κάνεις ό,τι ελέγχους θέλεις.
Α, ναι, ξέχασα και την GetChildRows ενός DataRow η οποία συμπεριφέρεται με την λογική της Select, παίρνοντας και αυτή προαιρετικά μια DataRowState παράμετρο, μόνο που τo DataRow array που επιστρέφει αφορά τα child rows ενός DataRow βάσει του DataRelation που έχει καθοριστεί.
Άρα λοιπόν, δεν χρειάζεσαι δύο ξεχωριστά DataSets για να κάνεις compare γιατί όταν λες ότι έχεις ένα DataSet, ουσιαστικά έχεις πολλαπλά Datasets, το κάθε ένα με διαφορετικές εκδόσεις των δεδομένων, ανάλογα με το τι έχεις κάνει σε αυτά. Από εκεί και πέρα, μπορείς με διάφορα iterations να κάνεις ελέγχους, να ξεχωρίσεις τις εγγραφές που σε ενδιαφέρουν, κλπ...
Vir prudens non contra ventum mingit