我正在使用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();
答案 0 :(得分:4)
Select
有override提供索引。
因此,您应该可以更改您的选择以包含它:
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是一个链接,使用它。