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

标签 c# asp.net linq

所以我在这样的文本文件中创建了一个行列表:

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,因为它有时真的可以节省时间。

关于c# - 获取文本文件中的最后两行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8582560/

相关文章:

asp.net-mvc - 如何仅在C#中按时间和时间排序?

c# - 如何在 LinQ 中合并多个集合

asp.net - 另一个 "is ASP.NET MVC right for me?"问题

javascript - 如何从父页面获取查询字符串?

c# - WPF DatePicker LostFocus 触发七次

c# - 有没有正确的方法来检索 SQL 中的字符串字段

c# - 缺少 jQuery 自动完成功能?

c# - 如何在 lambda 表达式中使用 IDisposable?

c# - 在应用程序中重命名树节点时重命名文件夹名称

c# - 启用 session 状态