c# - 在文本文件中搜索关键字,直到遇到字符串

标签 c# performance linq

我正在编写一个程序来帮助我在数千个文件中搜索关键字。这些文件中的每一个都有我需要忽略的不必要的行,因为它们会干扰结果。幸运的是,它们都位于这些文件中的特定行之后。
我已经得到的是搜索,不忽略特定行之后的行,返回包含关键字的文件名的可枚举。

var searchResults = files.Where(file => File.ReadLines(file.FullName)
                                            .Any(line => line.Contains(keyWord)))
                                            .Select(file => file.FullName);

有没有一种简单快速的方法来实现这个功能?它不一定必须在 Linq 中,因为我什至不确定这是否可能。

编辑:
一个例子让它更清楚。 文本文件的结构如下:
xxx
xxx
字符串
yyy
yyy

我想搜索 xxx 行,直到找到关键字或字符串,然后跳到下一个文件。我想在搜索中忽略的 yyy 行。

最佳答案

试试这个:

var searchResults = files.Where(file => File.ReadLines(file.FullName)
                                            .TakeWhile(line => line != "STOP")
                                            .Any(line => line.Contains(keyWord)))
                                            .Select(file => file.FullName);

关于c# - 在文本文件中搜索关键字,直到遇到字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31719022/

相关文章:

c# - 午夜 DateChange 事件

c# - 使用 System.Json 遍历 JSON

c# - 创建上划线文本

c# - DataTable Select 与 List<T> LINQ 性能

c# - Linq To SQL - 有效处理对象 - 检索第一个/单个对象

c# - 如何将文本作为页眉和页脚附加到文件的开头和结尾?

相同算法的 Java 与 C 版本

c# - 从DataReader检索数据的最有效方法是什么?

java - short 的性能/内存优势是否因向下转换而无效?

c# - 无法从 'System.Collections.Generic.IEnumerable<int>' 转换为 'System.Linq.IQueryable<int?>