C# 是否将指定文件夹中所有文件夹的名称而不是路径存储到列表中?
因此,我的.exe控制台应用程序所在的目录中有一个文件夹。我想列出该文件夹中的所有文件夹(称为C# 是否将指定文件夹中所有文件夹的名称而不是路径存储到列表中?,c#,windows,list,path,directory,C#,Windows,List,Path,Directory,因此,我的.exe控制台应用程序所在的目录中有一个文件夹。我想列出该文件夹中的所有文件夹(称为ClientFiles),但不需要完整路径。如果我有这样的层次结构: ClientFiles ---\ Folder1 ---\ Folder2 ---\ Folder3 我应该以一个包含字符串的列表结束:“Folder1”、“Folder2”、“Folder3” 这就是我现在拥有的: List<string> clientNumbers = Directory .GetDire
ClientFiles
),但不需要完整路径。如果我有这样的层次结构:
ClientFiles
---\ Folder1
---\ Folder2
---\ Folder3
我应该以一个包含字符串的列表结束:“Folder1”、“Folder2”、“Folder3”
这就是我现在拥有的:
List<string> clientNumbers = Directory
.GetDirectories(AppDomain.CurrentDomain.BaseDirectory + "ClientFiles\\")
.ToList<string>();
List clientNumbers=目录
.GetDirectory(AppDomain.CurrentDomain.BaseDirectory+“ClientFiles\\”)
.ToList();
但是它返回的列表包含每个元素的完整路径。有什么快速的解决方法吗?我想我可以浏览并删除前面的路径文本,但这似乎太多余了。您可以添加。在末尾选择(x=>x.Split('\')。LastOrDefault())
,例如:
List<string> clientNumbers = Directory.GetDirectories(AppDomain.CurrentDomain.BaseDirectory + "ClientFiles\\").ToList<string>()
.Select(x=>x.Split('\').LastOrDefault());
List clientNumbers=Directory.GetDirectories(AppDomain.CurrentDomain.BaseDirectory+“ClientFiles\\”).ToList()
.Select(x=>x.Split('\').LastOrDefault());
使用LINQ lambda表达式:
List<string> clientNumbers = Directory.GetDirectories(
AppDomain.CurrentDomain.BaseDirectory + "ClientFiles\\")
.ToList<string>().Select(s=>s.Split("\\").Last());
List clientNumbers=Directory.GetDirectories(
AppDomain.CurrentDomain.BaseDirectory+“ClientFiles\\”)
.ToList().Select(s=>s.Split(“\\”).Last();
LastOrDefault将返回相同的结果,因为字符串可以为null,带有一点LINQ:
List<string> clientNumbers = System.IO.Directory.GetDirectories(AppDomain.CurrentDomain.BaseDirectory + "ClientFiles\\")
.Select(x => x.Replace(AppDomain.CurrentDomain.BaseDirectory + "ClientFiles\\", "")).ToList();
List 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();
不需要文件名,特别是这里只需要文件夹名。@CapnJack函数名有点误导,但是
Path.GetFileName(string)
如果是文件夹对象,它会给你文件夹名。哇,这是误导,但它可以工作!将您的答案标记为最简单的答案。谢谢,这就是我的想法。然而,我将把JNYRanger的回答标记为答案,因为它有点简单。我想每个人都有自己的答案;)。但很高兴这件事为你澄清了
List<string> clientNumbers = Directory
.GetDirectories(directory)
.Select(x => Path.GetFileName(x))
.ToList();