在vb.net的两个列表框之间查找项目列表

在vb.net的两个列表框之间查找项目列表,vb.net,find,Vb.net,Find,我想检查列表框中的每个项目,如果项目存在,则将其添加到listbox3 for each item in listbox2.items if listbox1.items.contains (item) then listbox3.item.add (item) end if next 但是如果有办法一次在listbox中搜索项目列表,速度会非常慢?除非每个listbox的项目集合规模很大,否则我看不出这种方法有任何错误(除了较小的编码错误)。您可以使用Intersect方法获取它们都包含的所

我想检查列表框中的每个项目,如果项目存在,则将其添加到listbox3

for each item in listbox2.items
if listbox1.items.contains (item) then
listbox3.item.add (item)
end if
next

但是如果有办法一次在listbox中搜索项目列表,速度会非常慢?

除非每个listbox的项目集合规模很大,否则我看不出这种方法有任何错误(除了较小的编码错误)。

您可以使用Intersect方法获取它们都包含的所有项目

它看起来像。下面的代码未经测试

 For Each item in listbox2.items.Intersect(listbox1.items)
        listbox3.item.add (item)
    Next
编辑:因此,在查看它之后,似乎items是一个不包含intersect的objectcollection。你可以试着四处走动

For Each item in listbox2.items.Cast(Of Enumerable).Intersect(listbox1.items.Cast(Of Enumerable))
            listbox3.item.add (item)
        Next

虽然我创建了一个包含90000个字符串的列表,但不确定它的速度有多快

ListBox3.DataSource = ListBox1.Items.Cast(Of IEnumerable).Intersect(ListBox2.Items.Cast(Of IEnumerable)).ToList

当listbox2中的项目数很少时,它看起来很快,但如果两个listbox2中的项目数都超过9万个,则速度会非常慢。“如果两个列表框中的项目数都超过9万个”-是的,速度会很慢。也许将每个项目的ID放入Dictionary对象并对其进行操作以查找匹配项会更快,但我对
包含的内容(
隐藏起来)不太熟悉,不知道这样做是否更有效。