按名称对文件进行排序 与 C# 中的窗口相同
本文关键字:窗口 排序 文件 | 更新日期: 2023-09-27 18:34:09
可能的重复项:
C# 中的自然排序顺序
我一直在寻找一些代码来按与 Windows 相同的名称对我的文件进行排序,
我的目录包含文件"SD-Patch-1.sql", "SD-Patch-2.sql" ..., "SD-Patch-10.sql"
这是Windows格式化它们的方式,但是在我的应用程序中,当按名称排序时,它会对它们进行排序
SD-Patch-1.sql
SD-Patch-10.sql
... to 19
SD-Patch-2.sql
我如何获得与 Windows 相同的排序以使用
FileInfo[] files = dirInfo.GetFiles();
Array.Sort(files, (f1, f2) => f1.Name.CompareTo(f2.Name));
您应该在排序参数中使用自定义比较器
list.Sort(new customComparer());
比较器应如下所示:
class customComparer: IComparer<Object>
{
public int Compare(Object obj1, Object obj2)
{
//implament your own code for sorting any way you want
}
}
您的案例的一个代码示例可能是休耕。
稍后创建字典映射每个到相应的数字,如下所示:
//Mapping between file name characters and their corresponding number of choice
Dictionary<char, int> alphaNumDict = new Dictionary<char, int>()
{
{'a',1},
{'b',2},
{'c',3},
{'d',4},
{'e',5}
...
};
然后,您可以使用简单的方法将字符串更改为数字并比较字符串的值:
//iterate over the string and convert it to a corresponding number
double sum =0;
for (int i = 0; i < myString.Length; i++)
{
sum += alphaDict[myString[i]] * Math.Pow(10, i);
}
现在您需要做的就是比较您获得的数字并返回哪个更大