我想使用LINQ搜索文本文件的内容。
可以动态添加搜索条件。
将源修改为动态添加条件:
var targetLines = File.ReadAllLines(@"foo.txt")
.Select((x, i) => new { Line = x, LineNumber = i });
if(true)
targetLines.Where( x => x.Line.Contains("pattern"));
foreach (int condition in conditions)
targetLines.Where(condition....);
var result = targetLines.ToList();
foreach (var line in result)
Console.WriteLine("{0} : {1}", line.LineNumber, line.Line);
但它不起作用,条件未在输出中应用。
我可以使用LINQ吗?
答案 0 :(得分:4)
你错过了作业:
if(true)
targetLines = targetLines.Where( x => x.Line.Contains("pattern"));
foreach (var condition in conditions)
{
targetLines = targetLines.Where(condition....);
}
Where
方法不会修改目标变量,而是生成新的可枚举
答案 1 :(得分:3)
您需要执行以下操作
var result = targetLines.Where( x => x.Line.Contains("pattern")).ToList();
///var result = targetLines.ToList();
您可以在文档
中查看原因Enumerable.Where Method (IEnumerable, Func)
根据谓词过滤一系列值。
返回值
IEnumerable ,包含输入序列中的元素 满足条件。