我爲處理各種不同大小的各種導入文件的公司工作。我想對這些文件進行預先檢查,以發現並識別任何重複的行(整行與文件中的另一行匹配)。我已經爲此編寫了代碼,但是當文件的行數超過100,000時,代碼開始真的變慢。我怎樣才能讓這段代碼更快運行並保持代碼簡單?VB.NET在文本文件中查找重複行
Dim sr As New StreamReader(txtFile.Text)
While Not sr.EndOfStream
i += 1
' Save the header of the file if requested
If chkKeepHeader.Checked And i = 1 Then
sHLine = sr.ReadLine
End If
sLine = sr.ReadLine
' Compare the current line with the previous lines read
If lstDistLines.Contains(sLine) Then
iDupCount += 1
lstDupLines.Add(i & "," & sLine)
Else
lstDistLines.Add(sLine)
End If
' Update the display at regular intervals
If i Mod (50) < 1 Then
lblProcessCount.Text = i
Application.DoEvents()
End If
End While
sr.Close()
sr.Dispose()
sr = Nothing
如果找到dups,你想怎麼處理它們。保持點數,做其他事情等?此外,如果您要求審覈,那麼最好在http://codereview.stackexchange.com。有很多事情你可以做,但如提到最好在評論網站:) – Codexer
所有重複的行需要與原始行號一起報告給用戶,以便他們可以在原始文件中輕鬆找到。我通過將重複行存儲在單獨的文件中來完成此操作。 – Acavier
將行導入數據庫表(兩列,一行爲行號,第三行爲VARCHAR/NVARCHAR以容納行內容),並使用數據庫查找使用SQL的重複項。然後您可以向用戶顯示重複的行號。 (你問的速度,對不對?) –