将名称而不是指定文件夹中所有文件夹的路径存储到列表中?
所以我有一个与我的.exe控制台应用程序在同一个目录中的文件夹。 我想列出该文件夹内的所有文件夹(称为ClientFiles
)的列表,但我不想要完整的路径。 所以如果我有这样的层次结构:
ClientFiles
--- Folder1
--- Folder2
--- Folder3
我最终会得到一个包含字符串的列表:“文件夹1”,“文件夹2”,“文件夹3”。
这就是我现在所拥有的:
List<string> clientNumbers = Directory
.GetDirectories(AppDomain.CurrentDomain.BaseDirectory + "ClientFiles")
.ToList<string>();
但它返回的列表包含每个元素的完整路径。 任何快速解决这个问题的方法? 我想我可以通过foreach并删除前面的路径文本,但似乎是如此之多。
有几种方法可以完成此任务。
首先是简单地删除你已经知道的组件:
string directory = AppDomain.CurrentDomain.BaseDirectory + "ClientFiles";
List<string> clientNumbers = Directory
.GetDirectories(directory)
.Select(x => x.Substring(AppDomain.CurrentDomain.BaseDirectory.Length - 1)
.ToList();
假设你只想要文件的名称(或文件夹的名称,如果它是一个文件夹对象),你可以使用Path
类
List<string> clientNumbers = Directory
.GetDirectories(directory)
.Select(x => Path.GetFileName(x))
.ToList();
有了一点LINQ:
List<string> clientNumbers = System.IO.Directory.GetDirectories(AppDomain.CurrentDomain.BaseDirectory + "ClientFiles")
.Select(x => x.Replace(AppDomain.CurrentDomain.BaseDirectory + "ClientFiles", "")).ToList();
您可以在.Select(x=>x.Split('').LastOrDefault())
添加.Select(x=>x.Split('').LastOrDefault())
,例如:
List<string> clientNumbers = Directory.GetDirectories(AppDomain.CurrentDomain.BaseDirectory + "ClientFiles").ToList<string>()
.Select(x=>x.Split('').LastOrDefault());
链接地址: http://www.djcxy.com/p/36091.html
上一篇: Store the name but not the path of all folders in a specified folder to a list?