我想对它进行排序,这是每个文件的名称的编号。数组内容是:
0Infrared.jpg
10Infrared.jpg
12Infrared.jpg
14Infrared.jpg
16Infrared.jpg
2Infrared.jpg
4Infrared.jpg
6Infrared.jpg
8Infrared.jpg但我希望它能像在硬盘上那样被订购:
0Infrared.jpg
2Infrared.jpg
4Infrared.jpg
6Infrared.jpg
8Infrared.jpg
10Infrared.jpg
12Infrared.jpg
14Infrared.jpg
16Infrared.jpg
string[] list = Directory.GetFiles(countriesMainPath + "\\" + currentDownloadCountry,
"*infrared*.jpg");
Array.Sort(list, (x, y) => String.Compare(x.Name, y.Name));变量x和y没有属性名。
发布于 2017-01-14 15:06:12
您必须提取数字,解析它,并根据这个数字对整个列表进行排序。
string[] sorted = list.Select(x => new {
Item = x,
Number = int.Parse(Regex.Match(x, "[0-9]+").Value) })
.OrderBy(x => x.Number).Select(x => x.Item).ToArray();请注意,此解决方案假定所有文件都以数字开头。
发布于 2017-01-14 15:06:34
应该使用强类型集合,如FileInfo数组,可以使用DirectoryInfo.GetFiles或类似的重载来检索此类集合。
FileInfo具有一个名称属性,您可以在比较器中使用该属性
您正在进行的排序类型称为自然排序
https://stackoverflow.com/questions/41651351
复制相似问题