有沒有人有更快,更好的方式從列表視圖中刪除重複?我目前正在這樣做:我按字母順序排列項目,然後檢查下面的項目並將其與上面的項目進行比較。vb.net從列表視圖中刪除重複項的最快方法?
雖然這很耗時..當我向excel工作表中輸入20.000條記錄並刪除重複記錄時,它需要幾個毫秒,但下面的代碼需要幾個小時來檢查vb.net中的20.000項。有誰知道更快的方法?
Dim max As Integer = ListView2.Items.Count
Dim i As Integer = 0
For Each item As ListViewItem In ListView2.Items
If i = max Then
Exit For
End If
If i > 0 Then
If item.Text = ListView2.Items(i - 1).Text Then
max -= 1
item.Remove()
i -= 1
End If
End If
i += 1
Label4.Text = "Total domains: " & ListView2.Items.Count
Next
在for-each循環中刪除項通常是一個壞主意。通常最好在一個循環中處理一個副本或者以相反的順序進行。 「緩慢」可能是由於控件試圖重新繪製每個項目的所有內容。請參見[如何暫停控件及其子項的繪畫?](http://stackoverflow.com/q/487661/719186) – LarsTech
同樣,使用綁定到數據源的DataGridView可以輕鬆地檢查源和不要添加愚蠢的開始。無論如何,管理源代碼將會更快。控件不適用於數據存儲,而是將數據的*視圖*呈現給用戶。 – Plutonix
@Plutonix我可能會這樣做。 – Anders