首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何按名称对数组进行排序?

如何按名称对数组进行排序?
EN

Stack Overflow用户
提问于 2017-01-14 14:59:13
回答 2查看 41关注 0票数 0

我想对它进行排序,这是每个文件的名称的编号。数组内容是:

代码语言:javascript
复制
0Infrared.jpg
10Infrared.jpg
12Infrared.jpg
14Infrared.jpg
16Infrared.jpg
2Infrared.jpg
4Infrared.jpg
6Infrared.jpg
8Infrared.jpg

但我希望它能像在硬盘上那样被订购:

代码语言:javascript
复制
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没有属性名。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-14 15:06:12

您必须提取数字,解析它,并根据这个数字对整个列表进行排序。

代码语言:javascript
复制
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();

请注意,此解决方案假定所有文件都以数字开头。

票数 1
EN

Stack Overflow用户

发布于 2017-01-14 15:06:34

应该使用强类型集合,如FileInfo数组,可以使用DirectoryInfo.GetFiles或类似的重载来检索此类集合。

FileInfo具有一个名称属性,您可以在比较器中使用该属性

您正在进行的排序类型称为自然排序

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41651351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档