【问题标题】:How convert List to DirectoryInfo如何将 List 转换为 DirectoryInfo
【发布时间】:2015-11-22 09:30:10
【问题描述】:

在我的应用程序中,我有一个特定的目录,例如“C:\Temp\Folder1”,假设这个目录有以下子目录:

C:\Temp\Folder1\Admin\Billy
C:\Temp\Folder1\Customer\Michael
C:\Temp\Folder1\Admin\Julian
C:\Temp\Folder1\Customer\May
C:\Temp\Folder1\Admin\Sebastian

我使用 DirectoryInfo.GetDirectories() 获取上述所有子目录并转换为列表以过滤掉带有 C:\Temp\Folder1\Admin\ 的文件夹,我设法做到了。所以只有“客户”文件夹会保留在 DirectoryInfo 变量中。

假设我的列表中只有以下项目:

C:\Temp\Folder1\Customer\Michael
C:\Temp\Folder1\Customer\May

但是现在我有一个问题,我需要删除 DirectoryInfo 变量中可用的 Customer 文件夹,但过滤后的记录是一个列表,而不是 DirectoryInfo 类,所以我不能使用 DirectoryInfo.Delete() 删除每个客户文件夹。

那么如何将列表转换为 DirectoryInfo 或手动将列表中的每个项目添加到 DirectoryInfo 以便我可以对每个 Customer 文件夹执行删除?

【问题讨论】:

标签: c# directoryinfo


【解决方案1】:

如何将列表转换为 DirectoryInfo 或手动添加每个项目 在列表中放入 DirectoryInfo 以便我可以对每个执行删除 客户文件夹?

您可以使用Enumerable.Select 投影每个元素并从每个元素创建一个DirectoryInfo

foreach (var directory in listOfPaths.Select(path => new DirectoryInfo(path))
{
    directory.Delete();
}

【讨论】:

  • 您还可以使用 listOfPaths.Where(path => path.Contains("Admin")) 进一步过滤您的结果。希望对您有所帮助。
  • 感谢您的指导。但是由于更复杂的要求,我使用 List 将 DirectoryInfo 转换为列表,并且我可以在过滤后使用 Delete() 。非常感谢您的提示
【解决方案2】:

您应该检查 System.IO.Directory.Delete(string path) 方法。这不需要创建一个新对象来删除文件夹。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-27
    • 1970-01-01
    • 2018-12-27
    • 2013-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多