[英]Store the name but not the path of all folders in a specified folder to a list?
所以我在.exe控制台应用程序所在的目录中有一个文件夹。 我想列出该文件夹内的所有文件夹(它叫做ClientFiles
),但我不想要完整的路径。 所以,如果我有这样的层次结构:
ClientFiles
---\ Folder1
---\ Folder2
---\ Folder3
我应该得到一个包含字符串的列表:“Folder1”,“Folder2”,“Folder3”。
这就是我现在所拥有的:
List<string> clientNumbers = Directory
.GetDirectories(AppDomain.CurrentDomain.BaseDirectory + "ClientFiles\\")
.ToList<string>();
但它返回的列表包含每个元素的完整路径。 有什么快速解决方法吗? 我想我可以通过并删除前面的路径文本,但这似乎是额外的。
有点LINQ:
List<string> clientNumbers = System.IO.Directory.GetDirectories(AppDomain.CurrentDomain.BaseDirectory + "ClientFiles\\")
.Select(x => x.Replace(AppDomain.CurrentDomain.BaseDirectory + "ClientFiles\\", "")).ToList();
有几种方法可以实现这一目标。
首先是删除您已经知道的组件:
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();
您可以在.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());
使用LINQ lambda表达式:
List<string> clientNumbers = Directory.GetDirectories(
AppDomain.CurrentDomain.BaseDirectory + "ClientFiles\\")
.ToList<string>().Select(s=>s.Split("\\").Last());
LastOrDefault将返回相同的值,因为字符串可以为空
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.