【发布时间】:2014-06-13 19:32:05
【问题描述】:
我所拥有的是 100% 运行,但是我想知道是否有更清洁、更有效或更高可读性的方法来执行此操作,或者是否可以一一检查。
If XMLDataSet.Tables.Contains(CabinetTable.TableName) Then
XMLDataSet.Tables.Remove(CabinetTable.TableName)
XMLDataSet.Tables.Add(CabinetTable)
Else
XMLDataSet.Tables.Add(CabinetTable)
End If
If XMLDataSet.Tables.Contains(DocTypeTable.TableName) Then
XMLDataSet.Tables.Remove(DocTypeTable.TableName)
XMLDataSet.Tables.Add(DocTypeTable)
Else
XMLDataSet.Tables.Add(DocTypeTable)
End If
If XMLDataSet.Tables.Contains(IndexTable.TableName) Then
XMLDataSet.Tables.Remove(IndexTable.TableName)
XMLDataSet.Tables.Add(IndexTable)
Else
XMLDataSet.Tables.Add(IndexTable)
End If
If XMLDataSet.Tables.Contains(CabinetToTypeTable.TableName) Then
XMLDataSet.Tables.Remove(CabinetToTypeTable.TableName)
XMLDataSet.Tables.Add(CabinetToTypeTable)
Else
XMLDataSet.Tables.Add(CabinetToTypeTable)
End If
If XMLDataSet.Tables.Contains(TypeToIndexTable.TableName) Then
XMLDataSet.Tables.Remove(TypeToIndexTable.TableName)
XMLDataSet.Tables.Add(TypeToIndexTable)
Else
XMLDataSet.Tables.Add(TypeToIndexTable)
End If
我想我可以制作一个子来执行此操作,例如:
Private Sub addRemoveDataTable(ByRef ds As DataSet, ByVal dt As DataTable)
If ds.Tables.Contains(dt.TableName) Then
ds.Tables.Remove(dt.TableName)
End If
ds.Tables.Add(dt)
End Sub
但我仍然必须为每个 DataTable 调用它,所以我认为它不会更有效。
编辑:
我完全忘记了对数据表使用参数数组...
Private Sub addRemoveDataTable(ByRef ds As DataSet, ByVal ParamArray dTable() As DataTable)
For Each dt As DataTable In dTable
If ds.Tables.Contains(dt.TableName) Then
ds.Tables.Remove(dt.TableName)
End If
ds.Tables.Add(dt)
Next
End Sub
但是,For 循环的每次迭代都只是调用了第一个选项中的一个集合,所以我仍然看不到效率有多大提高。但是这个选项更容易阅读,也更灵活。
【问题讨论】: