从File.ReadAllLines()获取行号

时间:2014-06-11 15:34:13

标签: c# file.readalllines

我正在使用File.ReadAllLines()阅读文本文件,但我也可以使用File.ReadLines()。读完文件后,下一步是从结果中创建一个列表。在我的列表中,我需要获取文本文件中每个条目/行的行号。可以这样做吗?怎么样?对于我的最终结果,我需要我的列表有一个索引属性。

这就是我所拥有的:

var file = System.IO.File.ReadAllLines(path);

var lineInfo = file.AsParallel().AsOrdered()
    .Select(line => new
    {     
       // index =  **** I WANT THE INDEX/ROWNUMBER HERE ****
       lineType = line.Substring(0, 2),
       winID = line.Substring(11, 9),
       effectiveDate = line.Substring(0, 2) == EmployeeLine ? line.Substring(237, 8).ToDateTimeExact("yyyyMMdd") : null,
                    line
     })
     .ToList()
     .AsParallel();

2 个答案:

答案 0 :(得分:4)

Selectoverride提供索引。

因此,您应该可以更改您的选择以包含它:

var lineInfo = file.AsParallel().AsOrdered()
    .Select((line, index) => new
    {     
         ....
    }
 })
 .ToList()
 .AsParallel();

然而,正如Servy在评论中指出的那样,如果您要加载整个文件,只是在之后再次迭代它,那么您也可以以流方式处理每一行。

了解框架的新内容总是有用的。

答案 1 :(得分:1)

你可以尝试这个:

.Select((line,index) => new
{     
   Index = index
   lineType = line.Substring(0, 2),
   // the rest of your code.
 })

同样here是一个链接,使用它。