Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 读取具有动态条件的文本文件_C#_Linq - Fatal编程技术网

C# 读取具有动态条件的文本文件

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

我想用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吗?

您需要执行以下操作

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条件看起来很糟糕,我假设这是一个伪代码,您有一个谓词列表