C#-SearchOption.AllDirectories,但不在某些文件夹中

C#-SearchOption.AllDirectories,但不在某些文件夹中,c#,subdirectory,C#,Subdirectory,我想使用这个Directory.GetFiles(source、file、SearchOption.AllDirectories)) 但不要在特定文件夹中搜索 我该怎么办?谢谢大家! 使用GetFiles和search选项。所有目录将搜索所有目录。如果您不担心搜索所有目录的性能影响,只想过滤结果,可以执行以下操作: var pathsToAvoid = new List<string> { @"c:\public\temp\", @"c:\public\media\" }; var

我想使用这个
Directory.GetFiles(source、file、SearchOption.AllDirectories))

但不要在特定文件夹中搜索


我该怎么办?谢谢大家!

使用
GetFiles
search选项。所有目录
将搜索所有目录。如果您不担心搜索所有目录的性能影响,只想过滤结果,可以执行以下操作:

var pathsToAvoid = new List<string> { @"c:\public\temp\", @"c:\public\media\" };

var files = Directory.GetFiles(@"c:\public\", "temp.txt", SearchOption.AllDirectories)
    .Where(filePath => !pathsToAvoid.Any(path =>
    filePath.StartsWith(path, StringComparison.OrdinalIgnoreCase)));
var pathsToAvoid=新列表{@“c:\public\temp\”,@“c:\public\media\”;
var files=Directory.GetFiles(@“c:\public\”、“temp.txt”、SearchOption.AllDirectories)
.Where(文件路径=>!路径避免.Any(路径=>
StartsWith(path,StringComparison.OrdinalIgnoreCase));

否则,您需要一次手动搜索一个您关心的目录。

使用
GetFiles
SearchOption。所有目录
将搜索所有目录。如果您不担心搜索所有目录的性能影响,只想过滤结果,可以执行以下操作:

var pathsToAvoid = new List<string> { @"c:\public\temp\", @"c:\public\media\" };

var files = Directory.GetFiles(@"c:\public\", "temp.txt", SearchOption.AllDirectories)
    .Where(filePath => !pathsToAvoid.Any(path =>
    filePath.StartsWith(path, StringComparison.OrdinalIgnoreCase)));
var pathsToAvoid=新列表{@“c:\public\temp\”,@“c:\public\media\”;
var files=Directory.GetFiles(@“c:\public\”、“temp.txt”、SearchOption.AllDirectories)
.Where(文件路径=>!路径避免.Any(路径=>
StartsWith(path,StringComparison.OrdinalIgnoreCase));

否则,您需要一次手动搜索一个您感兴趣的目录。

不使用该选项并手动递归文件夹。对不起,我是说在某些文件夹中,但我认为您的答案是相同的。它们可以从结果中排除,但是没有递归就无法将它们从搜索中排除,除非要排除的文件夹直接位于源文件夹中,否则不使用该选项并手动递归文件夹。对不起,我的意思是在某些文件夹中,但我认为您的答案是相同的。它们可以从结果中排除,但是没有递归就无法将它们从搜索中排除,除非要排除的文件夹直接位于源文件夹中。我更喜欢这里的
EnumerateFiles
,而不是
GetFiles
,我自己……因为它有点像LINQ-y。净效果显然是一样的。我更喜欢这里的
EnumerateFiles
,而不是我自己的
GetFiles
,因为它有点像LINQ-y。显然,净效应是相同的。