Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.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中从文件搜索中排除目录#_C# - Fatal编程技术网

C# 在C中从文件搜索中排除目录#

C# 在C中从文件搜索中排除目录#,c#,C#,我尝试使用 Directory.EnumerateDirectories 假设我想在Windows中搜索整个C:\s,但我想排除一些路径(例如C:\asdf、C:\lorem\ipsum)或文件夹名称(例如folder1、folder2等)。我想创建一个语句,从字符串列表中筛选出路径和文件夹。这意味着: List<string> exclude = new List<string>{@"C:\asdf", @"C:\lorem\ipsum", "folder2"};

我尝试使用

Directory.EnumerateDirectories
假设我想在Windows中搜索整个C:\s,但我想排除一些路径(例如C:\asdf、C:\lorem\ipsum)或文件夹名称(例如folder1、folder2等)。我想创建一个语句,从字符串列表中筛选出路径和文件夹。这意味着:

List<string> exclude = new List<string>{@"C:\asdf", @"C:\lorem\ipsum", "folder2"};
List exclude=新列表{@“C:\asdf”,“C:\lorem\ipsum”,“folder2”};
如何从上述目录搜索中排除这些路径和文件夹名称?

List exclude=new List{@“C:\asdf”,“C:\lorem\ipsum”,“folder2”};
List<string> exclude = new List<string> { @"C:\asdf", @"C:\lorem\ipsum", "folder2" };

Func<string, string, bool> containsCaseInsensitivePredicate = (s, p) => s.IndexOf(p, StringComparison.OrdinalIgnoreCase) != -1;

Func<string, bool> notInExcludeListPredicate = (s) => !exclude.Any(ex => containsCaseInsensitivePredicate(ex, s));

IEnumerable<string> directories = Directory.EnumerateDirectories(@"C:\").Where(notInExcludeListPredicate);
Func containsCaseSensitivePredicate=(s,p)=>s.IndexOf(p,StringComparison.OrdinalIgnoreCase)!=-1. Func NOTINCLUDELISTPREDICATE=(s)=>!排除。任何(ex=>包含SEINSensitivePredicate(ex,s)); IEnumerable directories=Directory.EnumerateDirectories(@“C:\”)。其中(notincludeListPredicate);
List exclude=新列表{@“C:\asdf”,“C:\lorem\ipsum”,“folder2”};
Func containsCaseSensitivePredicate=(s,p)=>s.IndexOf(p,StringComparison.OrdinalIgnoreCase)!=-1.
Func NOTINCLUDELISTPREDICATE=(s)=>!排除。任何(ex=>包含SEINSensitivePredicate(ex,s));
IEnumerable directories=Directory.EnumerateDirectories(@“C:\”)。其中(notincludeListPredicate);

如果搜索整个C驱动器,我建议不要使用
SearchOption.AllDirectories
而是使用遍历目录层次结构的自定义方法。例如然后跳过/排除
exclude
中包含的路径。
是否为“folder2”
部分目录名?
var result=new DirectoryInfo(“您的路径”).EnumerateDirectories()。其中(d=>!exclude.Contains(d.name))
@MarkusDeibel它只是路径中某个地方的一个文件夹,@SeM的方法很不幸是不够的。如果搜索整个C驱动器,我建议不要使用
SearchOption.AllDirectories
,而是使用遍历目录层次结构的自定义方法。例如然后跳过/排除
exclude
中包含的路径。
是否为“folder2”
部分目录名?
var result=new DirectoryInfo(“您的路径”).EnumerateDirectories()。其中(d=>!exclude.Contains(d.name))@MarkusDeibel它只是路径中某个地方的一个文件夹,不幸的是@SeM的方法还不够。