C# Linq 查询在多个文本文件中搜索单个关键字

标签 c# linq filesystems

你有一个目录 C:\jimmybuffett\

此目录中有两个文本文件: 歌曲列表1.txt

这是 songlist1.txt 中的文本:

Margaritaville

Boat Drinks

Fins

第二个文件是: songlist2.txt

这是 songlist2.txt 中的文本:

Margaritaville

Boat Drinks Fins

我尝试编写一个 Linq 查询来搜索文件夹 jimmybuffett 中的所有文件并查找包含歌曲名称“Fins”的文件。

这是我的:

using System;
using System.Linq;
using System.IO;

class Program
{
    public static void Main(string[] args)
    {
        String strPath = @"C:\jimmybuffett";
        String strSong = "Fins";

        var songs = from song in Directory.GetFiles(strPath, "*", SearchOption.AllDirectories)
                    where File.ReadAllLines(song).Contains(strSong)
                    select song;

        foreach(var song in songs)
        {
            Console.WriteLine(song);
        }

        Console.WriteLine("Press <enter> to continue");
        Console.ReadLine();
    }
}

此 Linq 查询找到 songlist1.txt,因为搜索词“Fins”位于单独的一行。

但是 songlist2.txt 未找到,因为搜索词“Fins”与“Boat Drinks”在同一行。

我的问题是如何修改我的 Linq 查询,以便我能够识别行中任意位置包含搜索词的文件。

这类似于 %Fins% SQL 查询。

我知道我可以使用正则表达式,但我想知道我是否可以直接从我的 Linq 查询中执行此操作。

谢谢

最佳答案

你可以使用Any 像这样的代码:

static void Main(string[] args)
        {


        String strPath = @"C:\jimmybuffett";
        String strSong = "Fins";

        var songs = from song in Directory.GetFiles(strPath, "*", SearchOption.AllDirectories)
                    where File.ReadAllLines(song).Any(x=>x.Contains(strSong))
                    select song;

        foreach(var song in songs)
        {
            Console.WriteLine(song);
        }

        Console.WriteLine("Press <enter> to continue");
        Console.ReadLine();
    }

关于C# Linq 查询在多个文本文件中搜索单个关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45511279/

相关文章:

filesystems - 文件类型指示符,sys/stat.h st_mode 常规文件代码值

linux - JFFS2中使用的算法

c# - 如何禁用 ToolStripButton?

c# - 更聪明的where子句?

php - 文件不存在但可以 require_once() 它

c# - MySQL - 架构无效且未为 .....(等)的实例指定映射

c# - 从 MethodCallExpression 获取投影

c# - 在 Azure 批处理中创建自定义目录

c# - 计算两个数: what's the meaning of optimizations?的算术平均值(average)

c# - 如何从 Windows 8 Metro 应用程序中的 WebView 获取 HTML 元素 onClick?