C#:对目录名称进行排序并选择最新的最简单的方法是什么?

发布于 2024-08-18 12:36:59 字数 118 浏览 2 评论 0原文

我有一个父目录中的目录列表。这些目录将以 00001、00002、00003... 等格式创建,因此尾随数字较大的目录是最近的目录。在上面的例子中,它是 00003。我想以编程方式获取它。

感谢您的帮助..

I have a list of directories in a parent directory. These directories will be created in a format like 00001, 00002, 00003... so that the one with the bigger trailing number is the recent one. in the above instance, it is 00003. I want to get this programmatically.

thanks for any help..

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

青瓷清茶倾城歌 2024-08-25 12:36:59

试试这个:

var first = Directory.GetDirectories(@"C:\")
   .OrderByDescending(x => x).FirstOrDefault();

显然将 C:\ 替换为父目录的路径。

Try this:

var first = Directory.GetDirectories(@"C:\")
   .OrderByDescending(x => x).FirstOrDefault();

Obviously replace C:\ with the path of the parent directory.

潜移默化 2024-08-25 12:36:59

.NET 2:

    private void button1_Click(object sender, EventArgs e) {
        DirectoryInfo di = new DirectoryInfo(@"C:\Windows");
        DirectoryInfo[] dirs = di.GetDirectories("*", 
            SearchOption.TopDirectoryOnly);

        Array.Sort<DirectoryInfo>(dirs, 
            new Comparison<DirectoryInfo>(CompareDirs);
    }

    int CompareDirs(DirectoryInfo a, DirectoryInfo b) {
        return a.CreationTime.CompareTo(b.CreationTime);
    }

.NET 2:

    private void button1_Click(object sender, EventArgs e) {
        DirectoryInfo di = new DirectoryInfo(@"C:\Windows");
        DirectoryInfo[] dirs = di.GetDirectories("*", 
            SearchOption.TopDirectoryOnly);

        Array.Sort<DirectoryInfo>(dirs, 
            new Comparison<DirectoryInfo>(CompareDirs);
    }

    int CompareDirs(DirectoryInfo a, DirectoryInfo b) {
        return a.CreationTime.CompareTo(b.CreationTime);
    }
酸甜透明夹心 2024-08-25 12:36:59

为什么不做这样的事情:

string[] directories = Directory.GetDirectories(@"C:\temp");
string lastDirectory = string.Empty;

if (directories.Length > 0)
{
    Array.Sort(directories);
    lastDirectory = directories[directories.Length - 1];
}

Why not do something like this:

string[] directories = Directory.GetDirectories(@"C:\temp");
string lastDirectory = string.Empty;

if (directories.Length > 0)
{
    Array.Sort(directories);
    lastDirectory = directories[directories.Length - 1];
}
川水往事 2024-08-25 12:36:59

又如何:

var greaterDirectory =
    Directory.GetDirectories(@"C:\")
        .Select(path => Path.GetFileName(path)) // keeps only directory name
        .Max();

或者

var simplest = Directory.GetDirectories(@"C:\").Max();

What about:

var greaterDirectory =
    Directory.GetDirectories(@"C:\")
        .Select(path => Path.GetFileName(path)) // keeps only directory name
        .Max();

or

var simplest = Directory.GetDirectories(@"C:\").Max();
圈圈圆圆圈圈 2024-08-25 12:36:59

只需将 GetDirectories 或 GetFiles 的输出扔到冒泡排序函数中即可。

    private void SortFiles(FileSystemInfo[] oFiles)
    {
        FileSystemInfo oFileInfo = null;

        int i = 0;
        while (i + 1 < oFiles.Length)
        {
            if (string.Compare(oFiles[i].Name, oFiles[i + 1].Name) > 0)
            {
                oFileInfo = oFiles[i];
                oFiles[i] = oFiles[i + 1];
                oFiles[i + 1] = oFileInfo;
                if (i > 0)
                {
                    i--;
                }
            }
            else
            {
                i++;
            }
        }
    }

Just throw the output of GetDirectories or GetFiles at a bubble sort function.

    private void SortFiles(FileSystemInfo[] oFiles)
    {
        FileSystemInfo oFileInfo = null;

        int i = 0;
        while (i + 1 < oFiles.Length)
        {
            if (string.Compare(oFiles[i].Name, oFiles[i + 1].Name) > 0)
            {
                oFileInfo = oFiles[i];
                oFiles[i] = oFiles[i + 1];
                oFiles[i + 1] = oFileInfo;
                if (i > 0)
                {
                    i--;
                }
            }
            else
            {
                i++;
            }
        }
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文