1

これらの行を ListBox に追加します。(Windows フォーム)

私は使うだろう:

String file_name = @"x:\....";
int first_line = 24536;
int last_line = 25536;

for ( int i = first_line; i <= last_line; i++)
{
  this.listBox.Items.Add(File.ReadLines(this.file_name).ElementAt(i));
}

しかし、これは1000行をロードするのにかなりの時間がかかります.

これをより効率的に(より速く)行うにはどうすればよいですか?

4

2 に答える 2

8

ElementAt現在、毎回呼び出しています。これは、新しい行ごとにファイルを最初から読み取ることを意味します。

これを試して:

string[] lines = File.ReadLines(fileName)
                     .Skip(firstLine - 1) // Assuming 1-based line numbers
                     .Take(lastLine - firstLine)
                     .ToArray();
listBox.Items.AddRange(lines);

(変数名から型にはまらないアンダースコアを削除したことに注意してください。)

于 2012-07-25T08:28:08.520 に答える
1

リスト内のファイル行を渡し、インデックスIDで呼び出すことができます

IEnumerable<string> = File.ReadLines(@"c:\test.txt")
                      .Take(NumberOfLines);
于 2012-07-25T08:52:16.547 に答える