0

我需要能够快速删除 datagridview 中的重复条目。不幸的是,我这样做的方式可能需要几分钟才能处理超过 100K 的项目。

这是我正在使用的代码:

  Dim wordlist As New List(Of String)
    Dim numCols As Integer = DataGridView1.ColumnCount
    Dim numRows As Integer = DataGridView1.RowCount - 1
    Dim wordlist2 As New List(Of String)

    For count As Integer = 0 To numRows - 1
        wordlist.Add(DataGridView1.Rows(count).Cells("url").Value)
    Next

    For Each word As String In wordlist
        If Not wordlist2.Contains(word) Then
            wordlist2.Add(word)
        End If
    Next

    fullitem.Clear()

    For Each word2 As String In wordlist2
        fullitem.Add(New item(word2, "", ""))

    Next

    DataGridView1.RowCount = fullitem.Count + 1
    MessageBox.Show("Done!")

datagridview 处于虚拟模式以支持海量数据。

如果有人可以帮助我找出一种快速消除欺骗的方法,我将不胜感激。

4

1 回答 1

0

与其先将其添加到 wordList 然后循环遍历并检查何时将其添加到第二个列表,只需检查何时将其添加到第一个列表即可。此外,我们立即将其添加到 fullitem(不知道那是什么,您不显示它是什么)。我们只是使用包含的列表。

这样,我们将三个循环减少到一个。

Dim wordlist As New List(Of String)
Dim numCols As Integer = DataGridView1.ColumnCount
Dim numRows As Integer = DataGridView1.RowCount - 1
Dim word As String

fullitem.Clear()

For count As Integer = 0 To numRows - 1
    word = DataGridView1.Rows(count).Cells("url").Value
    If Not wordlist.Contains(word) Then
        wordlist.Add(word)
        fullitem.Add(New item(word, "", ""))
    End If
Next

DataGridView1.RowCount = fullitem.Count + 1
MessageBox.Show("Done!")
于 2013-11-08T19:38:25.637 回答