假设我按名称在资源管理器中对文件列表进行了排序,如下所示:
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#中实现了一个类,它将为您完成此操作.