вместо папки получаю полный путь к ней (c#)

есть вот такой код:

foreach (string dI in Directory.GetDirectories(argument))
{
    string dirs += dI + "^";
}

проблема в том что к примеру вместо папки Public я получаю C:\Users\Public так же я пробовал

string dirs = string.Join("^", Directory.GetDirectory(@"C:\").Select(path => Path.GetDirectoryName(path)));

но он не работает


Ответы (2 шт):

Автор решения: Алексей Обухов

тут всего один вариант получения последней папки, который работает для разных случаев:

var dir = @"c:\folder1\folder2";
Console.WriteLine(Path.GetDirectoryName(dir)); //c:\folder1 - FAIL
Console.WriteLine(new DirectoryInfo(dir).Name); //folder2 - OK
Console.WriteLine(dir.Split('\\').LastOrDefault()); //folder2 - OK
Console.WriteLine();

dir = @"c:\folder1\folder2\";
Console.WriteLine(Path.GetDirectoryName(dir)); //c:\folder1\folder2 - FAIL
Console.WriteLine(new DirectoryInfo(dir).Name); //folder2 - OK
Console.WriteLine(dir.Split('\\').LastOrDefault()); //null - FAIL
Console.WriteLine();

dir = @"c:/folder1/folder2";
Console.WriteLine(Path.GetDirectoryName(dir)); //c:\folder1 - FAIL
Console.WriteLine(new DirectoryInfo(dir).Name); //folder2 - OK
Console.WriteLine(dir.Split('\\').LastOrDefault()); //c:/folder1/folder2 - FAIL
Console.WriteLine();

П.С. напишем теперь полный код получения списка папок внутри заданного родителя (выведем их как команда dir):

static void Main(string[] args)
{
    Dir(@"c:\");
}

static void Dir(string argument)
{
    string dirs = "";
    foreach (string dI in Directory.GetDirectories(argument))
    {
        dirs += new DirectoryInfo(dI).Name + "\n";
    }
    Console.WriteLine(dirs);
}
→ Ссылка
Автор решения: Александр Вовк

Попробуйте:

string path = folderBrowserDialog.SelectedPath;
Path.GetFileName(path);
→ Ссылка