我正在使用File.ReadLines在大型文本文件中搜索一些字符串值。在匹配条件时,它返回true或false。我想要的是在找到匹配时返回行(行的内容,而不是行号)。有没有办法用File.ReadLines实现这一点,谢谢?
isItThere = File
.ReadLines(textBox2.Text).Any(x => x.ToLower().Contains(name.ToLower()) ||
x.Contains(date_to_chk1)));
我希望找到匹配时的特定行
答案 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