使用File.ReadLines读取匹配的行

时间:2018-03-26 12:49:49

标签: c# linq

我正在使用File.ReadLines在大型文本文件中搜索一些字符串值。在匹配条件时,它返回true或false。我想要的是在找到匹配时返回行(行的内容,而不是行号)。有没有办法用File.ReadLines实现这一点,谢谢?

isItThere = File
  .ReadLines(textBox2.Text).Any(x => x.ToLower().Contains(name.ToLower()) ||
                                     x.Contains(date_to_chk1)));

我希望找到匹配时的特定行

2 个答案:

答案 0 :(得分:2)

请注意,可能有多个匹配,因此我会使用Where

IEnumerable<string> matchingLines = File.ReadLines(textBox2.Text)
     .Where(line => line.IndexOf(name, StringComparison.CurrentCultureIgnoreCase) >= 0 
                 || line.IndexOf(date_to_chk1, StringComparison.CurrentCultureIgnoreCase) >= 0 );

另请注意,您不应使用String.ToLower以不区分大小写的方式比较字符串,而是string.IndexOf,如上所示。如果您想了解原因,可以使用Google turkish i

如果您只想要第一条匹配线,您仍然可以轻松获得:

string firstMatchingLine = matchingLines.FirstOrDefault(); // null if no line matched

答案 1 :(得分:0)

如果您想要符合条件的行,请使用Where代替Any