C# 读取具有动态条件的文本文件
我想用LINQ搜索文本文件的内容 可以动态添加搜索条件 并将源修改为动态添加where条件:C# 读取具有动态条件的文本文件,c#,linq,C#,Linq,我想用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")); forea
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吗?您需要执行以下操作
var result = targetLines.Where( x => x.Line.Contains("pattern")).ToList();
///var result = targetLines.ToList();
您可以在文档中看到原因
基于谓词筛选值序列
返回值
一个IEnumerable,包含输入序列中的元素
满足条件
您需要执行以下操作
var result = targetLines.Where( x => x.Line.Contains("pattern")).ToList();
///var result = targetLines.ToList();
您可以在文档中看到原因
基于谓词筛选值序列
返回值
一个IEnumerable,包含输入序列中的元素
满足条件
您错过了作业:
if(true)
targetLines = targetLines.Where( x => x.Line.Contains("pattern"));
foreach (var condition in conditions)
{
targetLines = targetLines.Where(condition....);
}
其中,方法不会修改目标变量,而是生成新的可枚举项,因为您错过了分配:
if(true)
targetLines = targetLines.Where( x => x.Line.Contains("pattern"));
foreach (var condition in conditions)
{
targetLines = targetLines.Where(condition....);
}
其中,方法不修改目标变量,而是生成新的可枚举项搜索条件未定义,我想使用循环,否则…添加更多条件。搜索条件将被动态添加。搜索条件没有被定义,我想使用循环,否则…添加更多条件。搜索条件将为add Dynamic.targetLines.Where返回需要分配给某个列表的IEnumerable,该列表将反映所需的筛选结果。int条件看起来很糟糕,我假设这是一个伪代码,并且您有predicatestargetLines列表。Where返回需要分配给某个列表的IEnumerable,这个列表将反映您想要的过滤结果。int条件看起来很糟糕,我假设这是一个伪代码,您有一个谓词列表