如何检查2列表框是否具有相同的项集合?

时间:2016-09-08 11:37:38

标签: vb.net

我从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的另一个循环和一个简单的字符串比较,但我认为这将是一个更简单的方法

1 个答案:

答案 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)