C# 文件夹排序:解决中文排在英文前的难题
这是因为在默认的字符串排序规则中,中文字符的编码范围比英文字符的编码范围要大。根据Unicode编码,中文字符的编码范围是U+4E00到U+9FFF,而英文字符的编码范围是U+0041到U+007A。
在使用LINQ的OrderBy方法时,默认会按照字符串的Unicode编码进行排序。因此,中文字符的编码范围大于英文字符的编码范围,所以中文字符会排在英文字符前面。
如果你希望按照字母顺序对文件夹进行排序,可以使用OrderBy方法,并指定一个自定义的排序规则。例如,你可以使用StringComparer.CurrentCulture来根据当前的区域设置进行排序:
toBeDownloadedFolders = folderInfos.GetDirectories('.', SearchOption.AllDirectories)
.OrderBy(file => file.FullName, StringComparer.CurrentCulture)
.Select(file => file.FullName);
这样就能按照字母顺序对文件夹进行排序,无论是中文还是英文字符。
原文地址: https://www.cveoy.top/t/topic/fck 著作权归作者所有。请勿转载和采集!