使用dir.GetDirectories时排除具有特定模式的目录

时间:2018-07-03 05:09:18

标签: c# c#-4.0

我想在使用GetDirectories方法时排除文件夹名称“ .svn”

/**
 * Table's columns
 *
 * @var array
 */
protected $columns = [
    'name' => [
        'heading' => 'Name',
        'value'   => '<strong>{entry.name}</strong>',
    ],
    'type' => [
        'heading' => 'Type',
    ],
    'categories' => [
        'heading' => 'Categories',
        'value'   => 'entry.type.categories.pluck("name")|join("<br>")',
    ],
];

我在某处读到GetDirectories的searchPattern参数只能支持?和*通配符,将不支持任何其他正则表达式。

我想使用DirectoryInfo [] dirs填充“ .svn”文件夹(例如)以外的所有文件夹。这可能吗?如果没有,我还有其他选择吗?

3 个答案:

答案 0 :(得分:1)

您可以在GetDirectories方法之后使用linq方法。

using System.Linq;
...
...
dir.GetDirectories().Where(d => !d.Name.StartsWith(".")).ToList(); //does not starts with dot.
dir.GetDirectories().Where(d => d.Name != ".svn").ToList(); //does not equal .svn

答案 1 :(得分:0)

是的,MSDN说(https://msdn.microsoft.com/en-au/library/f3e2f6e5(v=vs.110).aspx)搜索模式不支持正则表达式。但是您可以在客户端通过正则表达式过滤结果。例如:

var di = new DirectoryInfo("c:\\");
var dirInfos = di.GetDirectories();
var filtered = from r in dirInfos where !Regex.IsMatch(r.FullName,"$*.svn") select r;

答案 2 :(得分:0)

答案: DirectoryInfo []目录= dir.GetDirectories()。其中​​(x => x.Name!=“ .svn”)。ToArray(); (并且需要System.Linq;名称空间)

假设以下内容仍然适用:
https://meta.stackexchange.com/questions/1555/mark-a-comment-as-answer-to-a-question