如何按名称对文件列表进行排序以匹配Windows资源管理器显示它们的方式?

Mar*_*ter 3 .net c# sorting

假设我按名称在资源管理器中对文件列表进行了排序,如下所示:

2009-06-02-4.0.9.txt
2009-06-02-4.0.10.txt
2009-06-02-4.0.11.txt
2009-06-02-4.0.12.txt

我有一个FileInfo Comparer,它按名称对FileInfo对象数组进行排序:

    class FileInfoComparer : IComparer<FileInfo> {
        public int Compare(FileInfo x, FileInfo y) {
            return string.Compare(x.FullName, 
                                  y.FullName, 
                                  StringComparison.OrdinalIgnoreCase);
        }
    }
Run Code Online (Sandbox Code Playgroud)

使用此Comparer从上面对相同的文件列表进行排序产生:

2009-06-02-4.0.10.txt
2009-06-02-4.0.11.txt
2009-06-02-4.0.12.txt
2009-06-02-4.0.9.txt

这是有问题的,因为订单非常重要.

我想有一种模仿Windows在C#代码中所做的事情的方法,但我还没有找到办法.任何帮助表示赞赏!

谢谢!

Jon*_*ant 11

Windows资源管理器使用名为的API:

StrCmpLogicalW
Run Code Online (Sandbox Code Playgroud)

以"逻辑"的方式执行排序.

有人还在C#中实现了一个类,它将为您完成此操作.