我从lstData上的数据库加载项目然后我使用此代码在另一个名为lstOriginal的列表框上复制此状态
lstOriginal.Items.Clear()
For Each Item In lstData.Items
lstOriginal.Items.Add(Item)
Next
然后用户可以在lstData上进行更改,添加或删除项目,当用户按下UPDATE时,我需要知道lstData和lstOriginal的项目集合是否相同。
我不关心改变了什么,如果有什么不同,我会更新数据库中的完整项目集合。
所以我需要知道lstData和lstOriginal的项集合是否相同。
我知道的唯一方法是制作像
这样的循环Dim lstOriginalString as String
lstOriginalString = ""
For Each Item In lstOriginal.Items
lstOriginalString = lstOriginalString & Item
Next
然后是lstData的另一个循环和一个简单的字符串比较,但我认为这将是一个更简单的方法
答案 0 :(得分:1)
您可以使用LINQ:
Dim isSame As Boolean = lstData.Items.Count = lstOriginal.Items.Count
If isSame Then
Dim newItems = lstData.Items.Cast(Of String)()
Dim originalItems = lstOriginal.Items.Cast(Of String)()
isSame = Not newItems.Except(originalItems).Any()
End If
如果你想知道它是否按照相同的顺序:
isSame = newItems.SequenceEqual(originalItems)