gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 22:55:39 38 4
gpt4 key购买 nike

你有一个目录 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/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com