2

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

这是我所拥有的:

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();
4

2 回答 2

4

Select有一个提供索引的覆盖

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

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

但是,正如 Servy 在他的评论中指出的那样,如果您要加载整个文件,然后再对其进行迭代,那么您不妨以流式方式处理每一行。

不过,对于了解框架的新部分总是有用的。

于 2014-06-11T15:36:29.290 回答
1

你可以试试这个:

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

这里还有一个链接,其中使用了它。

于 2014-06-11T15:37:19.820 回答