gpt4 book ai didi

c# - 使用 Directory.GetDirectories 时如何排除文件夹

转载 作者:行者123 更新时间:2023-11-30 13:17:05 28 4
gpt4 key购买 nike

我想返回“SomeFolder”目录中所有子目录的列表,不包括“Admin”和“Templates”目录。

我有以下文件夹结构(简化):

    C:\inetpub\wwwroot\MyWebsite\SomeFolder\RandomString
C:\inetpub\wwwroot\MyWebsite\SomeFolder\RandomString
C:\inetpub\wwwroot\MyWebsite\SomeFolder\RandomString
C:\inetpub\wwwroot\MyWebsite\SomeFolder\Admin
C:\inetpub\wwwroot\MyWebsite\SomeFolder\Templates

“SomeFolder”可以包含不同数量的“RandomString”文件夹(从 ~10 到 ~100 之间的任何地方)。

这是我尝试过的:

    var dirs = Directory.GetDirectories(Server.MapPath(".."))
.Where(s => !s.EndsWith("Admin") || !s.EndsWith("Templates"));
foreach (string dir in dirs)
{
lit.Text += Environment.NewLine + dir;
}

这将返回完整的文件夹列表(如上所示),没有过滤掉“Admin”和“Templates”。

有趣的是,如果我将 LINQ .Where 子句更改为 include,而不是 exclude,则“Admin”和“Templates”会起作用,这意味着它只返回“Admin”和“Templates”的路径。

.Where(s => s.EndsWith("Admin") || s.EndsWith("Templates"));

如果 LINQ 不是解决方案,是否有任何方法可以使用 GetDirectories SearchPattern 来过滤目录?

最佳答案

你可以这样做:

//list your excluded dirs
private List<string> _excludedDirectories= new List<string>() { "Admin", "Templates" };

//method to check
static bool isExcluded(List<string> exludedDirList, string target)
{
return exludedDirList.Any(d => new DirectoryInfo(target).Name.Equals(d));
}

//then use this
var filteredDirs = Directory.GetDirectories(path).Where(d => !isExcluded(_excludedDirectories, d));

关于c# - 使用 Directory.GetDirectories 时如何排除文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17036395/

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