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()