我使用这个功能:
files = Directory.GetFiles(tbDirectory.Text).ToArray();
我的文件按此顺序保存:
Text.txt
Text_10.txt
Text_2.txt
...
Text_9.txt
我希望它们像 windows 一样排序:
Text.txt
Text_2.txt
...
Text_9.txt
Text_10.txt
我怎么能这样做?
如果你想和windows一样对它们进行排序,可以使用这个函数进行比较:
[DllImport("shlwapi.dll", CharSet = CharSet.Unicode)]
private static extern int StrCmpLogicalW(string psz1, string psz2);
然后,您可以定义IComparer<string>
将使用此函数的实现。
根据 Andrey Shchekin 的回答,您只需要制作这样的课程:
internal class FileNameComparer : IComparer<string>
{
[DllImport("shlwapi.dll", CharSet = CharSet.Unicode)]
public static extern int StrCmpLogicalW(string psz1, string psz2);
public int Compare(string a, string b)
{
return StrCmpLogicalW(a, b);
}
}
然后使用这个比较器:
files = Directory.GetFiles(tbDirectory.Text).OrderBy(file => file, new FileNameComparer()).ToArray();