我想使用LINQ搜索文本文件的内容。
可以动态添加搜索条件。
并修改源以动态添加where条件:
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做吗?
发布于 2018-06-06 04:48:01
你错过了任务:
if(true)
targetLines = targetLines.Where( x => x.Line.Contains("pattern"));
foreach (var condition in conditions)
{
targetLines = targetLines.Where(condition....);
}
Where
方法不修改目标变量,而是生成新的可枚举变量。
发布于 2018-06-06 04:40:08
您需要执行以下操作
var result = targetLines.Where( x => x.Line.Contains("pattern")).ToList();
///var result = targetLines.ToList();
你可以在文档中看到原因
Enumerable.Where方法(IEnumerable, Func)
根据谓词筛选值序列。 返回值 IEnumerable ,它包含来自输入序列的满足条件的元素。
https://stackoverflow.com/questions/50712346
复制相似问题