所以我在文本文件中创建一个行列表,如下所示:
var lines = File.ReadAllLines("C:\\FileToSearch.txt")
.Where(x => !x.EndsWith("999999999999"));
并像这样循环遍历
foreach (var line in lines)
{
if (lineCounter == 1)
{
outputResults.Add(oData.ToCanadianFormatFileHeader());
}
else if (lineCounter == 2)
{
outputResults.Add(oData.ToCanadianFormatBatchHeader());
}
else
{
oData.FromUsLineFormat(line);
outputResults.Add(oData.ToCanadianLineFormat());
}
lineCounter = lineCounter + 1;
textBuilder += (line + "<br>");
}
就像我访问前两行一样,我想分别访问最后一行和第二行
答案 0 :(得分:11)
在这里,您可以再次利用LINQ:
var numberOfLinesToTake = 2;
var lastTwoLines = lines
.Skip(Math.Max(0, lines.Count() - numberOfLinesToTake))
.Take(numberOfLinesToTake);
var secondToLastLine = lastTwoLines.First();
var lastLine = lastTwoLines.Last();
或者,如果您想单独检索它们:
var lastLine = lines.Last();
var secondToLastLine =
lines.Skip(Math.Max(0, lines.Count() - 2)).Take(1).First();
我在最后添加了.First()
,因为.Take(1)
将返回一个包含一个项目的数组,然后我们会使用First()
抓取该数据。这可能是优化的。
同样,您可能希望熟悉LINQ,因为它有时可以节省时间。
答案 1 :(得分:0)
在不合适时使用 var 的问题之一。
ReadAllLines返回一个字符串数组: string []
您可以从末尾向后获取数组和索引的长度。