使用LINQ读取文本文件

cos*_*son 4 linq

我有一个文件,我想读入一个数组.

string[] allLines = File.ReadAllLines(@"path to file");
Run Code Online (Sandbox Code Playgroud)

我知道我可以迭代数组并找到包含模式的每一行并显示行号和行本身.

我的问题是:

是否可以使用LINQ做同样的事情?

Bro*_*ass 10

是的 - 使用Select()带索引的重载我们可以通过投影到包含行本身及其行号的匿名类型来实现:

var targetLines = File.ReadAllLines(@"foo.txt")
                      .Select((x, i) => new { Line = x, LineNumber = i })
                      .Where( x => x.Line.Contains("pattern"))
                      .ToList();

foreach (var line in targetLines)
{
    Console.WriteLine("{0} : {1}", line.LineNumber, line.Line);
}
Run Code Online (Sandbox Code Playgroud)

由于控制台输出是副作用,因此它应与LINQ查询本身分开.