我想您在列表框中的每個項目,如果項目存在,那麼添加的列表它listbox3找到2個列表框vb.net之間的項目
for each item in listbox2.items
if listbox1.items.contains (item) then
listbox3.item.add (item)
end if
next
但它是非常緩慢的,如果有方法來搜索一次列表框中的項目列表?
我想您在列表框中的每個項目,如果項目存在,那麼添加的列表它listbox3找到2個列表框vb.net之間的項目
for each item in listbox2.items
if listbox1.items.contains (item) then
listbox3.item.add (item)
end if
next
但它是非常緩慢的,如果有方法來搜索一次列表框中的項目列表?
除非每個Listbox的項目集合數量很大,否則我沒有發現這種方法有什麼問題(除了次要的編碼錯誤外)。
您可以使用Intersect方法獲取它們都包含的所有項目。 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
不知道有多快,這將是雖然
我創造了90000個的字符串列表,該工作瞬間:
ListBox3.DataSource = ListBox1.Items.Cast(Of IEnumerable).Intersect(ListBox2.Items.Cast(Of IEnumerable)).ToList
它看起來快,當你在listbox2但如果你有一些項目在兩個列表框中都有超過9萬個項目,那麼它非常緩慢。 – user934820
「如果你有兩個以上的9萬個項目」 - 是的,這將是緩慢的。也許把每個項目的ID放到一個Dictionary對象中並操縱它來查找匹配會更快,但是我對'Contains()'正在做的「冒險之中」知道這是否更有效率還不夠熟悉。 – Widor