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 回答