.net 比较行之间的数据表值以进行更改检测
我的目标是在我们将行更新到数据库之前检测并写入值已更改的信息 例如,我有两个列结构相同的数据表:.net 比较行之间的数据表值以进行更改检测,.net,vb.net,datatable,.net,Vb.net,Datatable,我的目标是在我们将行更新到数据库之前检测并写入值已更改的信息 例如,我有两个列结构相同的数据表:beforeEdit和afterEdit。在本例中,每个数据表只有一行 For i As Integer = 0 To beforeEdit.Columns.Count - 1 If beforeEdit(0).Item(i) <> afterEdit(0).Item(i) Then 'storing log which column have changed
beforeEdit
和afterEdit
。在本例中,每个数据表只有一行
For i As Integer = 0 To beforeEdit.Columns.Count - 1
If beforeEdit(0).Item(i) <> afterEdit(0).Item(i) Then
'storing log which column have changed
End If
Next
对于i As Integer=0到beforeEdit.Columns.Count-1
如果在编辑之前(0).项目(i)在编辑之后(0).项目(i),则
'存储已更改的列的日志
如果结束
下一个
有没有更好的方法来完成这项任务
提前感谢您不需要两个
数据表
。每个DataRow
已经维护了数据的两个副本。DataRow
的RowState
属性可以告诉您它是否已更改。如果未发生任何更改,则将保持不变
,否则将进行修改。您可以使用这样的代码来确定数据行中是否发生了更改以及发生了哪些更改:
Private Sub LogRecordChanges(row As DataRow)
If row.RowState = DataRowState.Unchanged Then
Console.WriteLine("No changes to row.")
Else
For Each column As DataColumn In row.Table.Columns
Dim currentValue = row(column, DataRowVersion.Current)
Dim originalValue = row(column, DataRowVersion.Original)
If currentValue.Equals(originalValue) Then
Console.WriteLine($"No changes to column '{column.ColumnName}'.")
Else
Console.WriteLine($"Column '{column.ColumnName}' changed from '{originalValue}' to '{currentValue}'.")
End If
Next
End If
End Sub