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

时间:2011-09-15 13:24:21

标签: vb.net find

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

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

但如果有方法可以立即搜索列表框中的项目列表,那么它会非常慢吗?

3 个答案:

答案 0 :(得分:1)

您可以使用相交方法获取它们都包含的所有项目。 http://msdn.microsoft.com/en-us/library/bb460136.aspx

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

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

编辑:所以看了之后,似乎项目是一个不包含相交的objectcollection。为了解决这个问题,你可以试试。

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

不确定会有多快

答案 1 :(得分:0)

除非每个Listbox的项目集合都很大,否则我认为这种方法没有任何问题(除了次要的编码错误)。

答案 2 :(得分:0)

我创建了一个包含90,000个字符串的列表,这可以立即生效:

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