加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 获取文本文件中的最后两行

发布时间:2020-12-15 04:30:23 所属栏目:百科 来源:网络整理
导读:所以我在文本文件中创建一个行列表,如下所示: var lines = File.ReadAllLines("C:FileToSearch.txt") .Where(x = !x.EndsWith("999999999999")); 并像这样循环 foreach (var line in lines){ if (lineCounter == 1) { outputResults.Add(oData.ToCanadian
所以我在文本文件中创建一个行列表,如下所示:
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,因为它有时可以节省时间.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读