所以我在文本文件中创建一个行列表,如下所示:
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>"); }
类似于我访问前两行我想分别访问最后一行和倒数第二行
解决方法
在这里,您可以再次利用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,因为它有时可以节省时间.