如何将 IEnumerable<DirectoryInfo> 的 属性 转换为 List<string>

How to cast property of IEnumerable<DirectoryInfo> to List<string>

我运行使用以下代码枚举网络共享上的所有可用文件夹和子文件夹,

    DirectoryInfo dirInfo = new DirectoryInfo(path);
    var dirList = dirInfo.EnumerateDirectories("*.", SearchOption.AllDirectories);
    foreach (var d in dirList)
    {
        Console.WriteLine(d.FullName);
    }

代码本身工作得很好。但是,我不想声明 var dirList,而是想直接使用 List<string> 变量,但我不清楚该怎么做。

这将从 EnumerateDirectories

编辑的 return 序列中提取全名
DirectoryInfo dirInfo = new DirectoryInfo(@"path");
List<string> directories = dirInfo.EnumerateDirectories("*.", SearchOption.AllDirectories)
                                  .Select(x => x.FullName).ToList();

Select 方法将 return 一个 IEnumerable,您可以轻松地将其转换为具有 ToList 扩展名的列表。

但是,使用更简单的目录 class 避免 DirectoryInfo class 可以获得相同的结果(仍然需要 ToList 才能对序列 returned 进行操作)

List<string> directories = Directory.EnumerateDirectories(path,"*.*", SearchOption.AllDirectories).ToList();

例如,您可能想查看 Linq:

var dirList = dirInfo.EnumerateDirectories("*.", SearchOption.AllDirectories).Select(dir => dir.FullName).ToList();