将名称而不是指定文件夹中所有文件夹的路径存储到列表中?

所以我有一个与我的.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?

下一篇: Why is access denied when I try to move a directory?