排除某些目录名称

Exclude certain directory names

如何在从目录中获取某些目录名称时排除它们? 我目前有:

Dim dir1 As DirectoryInfo() = dir2.GetDirectories()

我尝试了以下示例的变体:

Dim dir1 As DirectoryInfo() = dir2.GetDirectories().Where(Name = Name.Contains("00000000.001"))

尝试从进程中排除两个文件名,我将 运行 处理其余文件。任何建议都会很棒。谢谢!

编辑: Tim 使用此代码提供的测试答案:

Dim direct1 As DirectoryInfo
For Each direct1 In dir1
        ListBox2.Items.Add(direct1.Name)
Next

它显示了我目前试图避免的两个文件名。

您可以使用 LINQ,因此我更喜欢 DirectoryInfo.EnumerateDirectories

来自 MSDN:

The EnumerateDirectories and GetDirectories methods differ as follows: When you use EnumerateDirectories, you can start enumerating the collection of DirectoryInfo objects before the whole collection is returned. When you use GetDirectories, you must wait for the whole array of DirectoryInfo objects to be returned before you can access the array.

例如:

Dim dirs As DirectoryInfo() = dir2.EnumerateDirectories().
    Where(Function(dir) dir.Name.Contains("00000000.001")).
    ToArray()

如果您想排除它们,请使用 Not ...:

Dim dirs As DirectoryInfo() = dir2.EnumerateDirectories().
    Where(Function(dir) Not dir.Name.Contains("00000000.001")).
    ToArray()

如果要排除多次使用:

Dim exclude = { "00000000.001", "00000000.002" }

Dim dirs As DirectoryInfo() = dir2.EnumerateDirectories().
    Where(Function(dir) Not exclude.Any(Function(d) dir.Name.Contains(d))).
    ToArray()