私はさまざまなサイズのさまざまなインポートファイルを扱う会社で働いています。これらのファイルの事前チェックを開発して、重複する行を見つけて識別します(行全体がファイル内の別の行と一致する場合)。私はすでにこのコードを書いていますが、ファイルの行数が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
行をデータベース表にインポートします(2行、行番号の1列、3行目は行内容を保持するVARCHAR/NVARCHAR).DBを使用してSQLを使用して重複を検索します。次に、複製された行番号をユーザーに表示することができます。 (あなたはスピードを求めていましたか?) –