gpt4 book ai didi

C# 获取从 X 开始按名称排序的目录

转载 作者:太空宇宙 更新时间:2023-11-03 22:42:20 24 4
gpt4 key购买 nike

我需要获取另一个目录中的目录,但只有那些“在”X 之后按目录名称排序的目录。

例子:

-Root
|--DirectoryA
|--DirectoryB
|--DirectoryC
|--DirectoryD

所以基本上是这样的:

foreach(string path in Directory.GetDirectories("/root/"))
{
Console.WriteLine(path);
}

输出:

/root/DirectoryA
/root/DirectoryB
/root/DirectoryC
/root/DirectoryD

但实际上我只需要获取 C 之后的那些(包括它),我想使用 Linq 应该不会太难,但我真的看不出如何做。

也许是这样的:

Directory.GetDirectories("/root/").OrderByDescending(dirName => 
Path.GetDirectoryName(dirName)) ??

最佳答案

您可以使用 SkipWhile ,假设顺序是字母顺序:

foreach(string path in Directory.GetDirectories("/root/")
.Select(dir => Path.GetFileName(dir))
.SkipWhile(dir => string.Compare(dir, "DirectoryC") < 0)
{
Console.WriteLine(path);
}

这样您将避免在遇到第一个有效目录后进行冗余过滤。

如果您只想获取 DirectoryC 之前的文件夹,您可以使用 TakeWhile :

foreach(string path in Directory.GetDirectories("/root/")
.Select(dir => Path.GetFileName(dir))
.TakeWhile(dir => string.Compare(dir, "DirectoryC") < 0)
{
Console.WriteLine(path);
}

请注意 string.Compare取决于文化,您可以使用 other overloads自定义其行为。

关于C# 获取从 X 开始按名称排序的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51601179/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com