10万と3千本のソースコードをリファクタリング中です。嘘です。  
変更前と変更後の2つのDataTableを使っている処理を見付けました。
どうやらDataRowの変更前と変更後とでデータの比較がしたい様だったので
サンプルコードをでっちあげて「こんな方法もありますよー」と提案したりとか。
  
         ' テーブルの作成
        Dim col As New DataColumn("col", GetType(String))
        Dim table As New DataTable("table")
        table.Columns.Add(col)
        ' 行「ほげほげ」をテーブルへの追加
        Dim oldRow As DataRow = table.NewRow()
        oldRow("col") = "ほげほげ"
        table.Rows.Add(oldRow)
        ' テーブルに対する変更(「ほげほげ」追加)の確定
        table.AcceptChanges()
        ' 行「ほげほげ」に対して「ぴよぴよ」を上書き
        Dim newRow As DataRow = table.Rows(0)
        newRow("col") = "ぴよぴよ"
        ' 変更があったかどうか確認する
        For Each row As DataRow In table.Rows
            Select Case row.RowState
                Case DataRowState.Modified
                    ' 行に対して変更があった場合
                    ' 変更後の値 「ぴよぴよ」
                    Dim currentString As String
                    currentString = row("col", DataRowVersion.Current)
                    ' 変更前の値 「ほげほげ」
                    Dim originalString As String
                    originalString = row("col", DataRowVersion.Original)
     ' TODO:ここでデータの比較を行う
            End Select
        Next row
        ' やっぱりテーブルに対する変更を取り消します
        ' Rows(0)が「ぴよぴよ」→「ほげほげ」
        table.RejectChanges()