誰かがリストビューから重複を削除するためのより迅速で優れた方法を持っていますか?私は現在、このようにしています:アイテムをアルファベット順にソートし、次にアイテムをチェックし、それを上のアイテムと比較します。vb.net listviewから重複を削除する最速の方法は?
これは時間がかかります。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