首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#获取图像排序列表

C#获取图像排序列表
EN

Stack Overflow用户
提问于 2016-09-01 20:37:58
回答 1查看 265关注 0票数 0

我试图在一个普通目录中获得图像路径字符串的排序列表。该目录包含43个以数字命名的图像:"1.png“、"2.png",等等。

这是我的密码:

代码语言:javascript
复制
  var sorted = Directory.GetFiles(Directory.GetCurrentDirectory(), "*.png").OrderBy(f => f);           
  foreach (string img in sorted) 
  {
   Console.WriteLine(img);
  } 

我得到的结果

C:\Users\itapi\OneDrive\מסמכים\Visual 2013\Projects\Draw\bin\Debug\1.png C:\Users\itapi\OneDrive\מסמכים\Visual 2013\Projects\Draw\bin\Debug\10.png C:\Users\itapi\OneDrive\מסמכים\Visual 2013\Projects\Draw\bin\Debug\11.png C:\Users\itapi\OneDrive\מסמכים\Visual 2013\Projects\Draw\bin\Debug\12.png C:\Users\itapi\OneDrive\מסמכים\Visual 2013\Projects\Draw\bin\Debug\13.png C:\Users\itapi\OneDrive\מסמכים\Visual 2013\Projects\Draw\bin\Debug\14.png C:\Users\itapi\OneDrive\מסמכים\Visual 2013项目\Draw\bin\Debug\15.png C:\Users\itapi\OneDrive\מסמכים\Visual Studio 2013\Projects\bin\Debug\16.ng C:\Users\itapi\OneDrive \מסמכים\Visual\מסמכים\Visual 2013\Projects\\itapi\OneDrive\מסמכים\Visual 2013\\User\itapi\bin\Debug\17.png C:\Users\itapi\OneDrive\מסמכים\Visual 2013\Projects\itapi\bin\Debug\מסמכים\Visual 2013\项目\绘图\bin\Debug\2.png C:\Users\itapi\OneDrive\מסמכים\VisualמסמכיםStudio 2013\Projects \Draw\bin\Debug\20.png C:\Users\itapi\OneDrive\מסמכים\Visual 2013\Projects\Draw\bin\Debug\21.png C:\Users\itapi\OneDrive\מסמכים\Visual 2013\Projects\Draw\Debug\22.png C:\Users\itapi\OneDrive\מסמכים\Visual 2013\Projects\Draw\bin\Debug\23.png C:\Users\itapi\OneDrive\מסמכים\Visual 2013\Projects\绘制\bin\Debug\24.png C:\Users\itapi\OneDrive\מסמכים\Visual 2013\Projects\Draw\bin\Debug\25.png C:\Users\itapi\OneDrive\מסמכים\Visual 2013\Projects\25.png\bin\Debug\26.png C:\Users\itapi\OneDrive\מסמכים\Visual 2013\Projects\bin\Debug\27.png C:\Users\itapi\OneDrive\מסמכים\Visual 2013\Projects\\bin\Debug\28.png C:\Users\itapi\OneDrive\מסמכים\Visual 2013\Projects\Draw\bin\Debug\29.png C:\Users\itapi\OneDrive\מסמכים\Visual 2013\Projects\Draw\bin\Debug\3.png C:\User\itapi\OneDrive\מסמכים\Visual 2013\Projects\Draw\bin\Debug\30.png C:\\Users\itapi\OneDrive\מסמכים\Visual 2013\Projects\Draw\bin\Debug\מסמכים\Projects\bin\Debug\30.png C\\Users\itapi\OneDrive\מסמכים\Visual 2013\项目\绘图\bin\Debug\31.png C:\Users\itapi\OneDrive\מסמכים\Visual 2013\Projects\绘图\bin\Debug\32.png C:\Users\itapi\OneDrive\מסמכים\Visual 2013\Projects\拉伸\bin\Debug\bin:\用户\itapi\OneDrive\מסמכים\Visual 2013\Projects\bin\Debug\34.pC:\Users\itapi\OneDrive\מסמכים\Visual 2013\Projects\Debug\35.pngC:\Users\itapi\OneDrive\מסמכים\Visual 2013\Projects\Draw\bin\Debug\36.png C:\Users\itapi\OneDrive\מסמכים\Visual 2013\Projects\Draw\bin\Debug\37.png C:\Users\itapi\OneDrive\מסמכים\Visual 2013\Projects\Draw\bin\Debug\38.png C:\Users\itapi\OneDrive\מסמכים\Visual 2013\Projects\itapi\bin\Debug\37.png C:\ \User\bin\Debug\39 bin用户\itapi\OneDrive\מסמכים\Visual 2013\Projects\Draw\bin\Debug\4.png C:\Users\itapi\OneDrive\מסמכים\Visual 2013\Projects\Draw\bin\Debug\40.png C:\Users\itapi\ OneDrive\מסמכיםVisual 2013\מסמכים\itapi\bin\Debug\41.png C:\Users\itapi\OneDrive\מסמכים\Visual 2013\Projects\4.png\bin\Debug\42.png C:\Users\itapi\OneDrive\מסמכים\Visual 2013\Projects\7.png\Draw\bin\Debug\43.png C:\Users\itapi\OneDrive\מסמכים\Visual 2013\Projects\Draw\bin\Debug\5.png C:\Users\itapi\OneDrive\מסמכים\Visual 2013\Projects\Draw\bin\Debug\6.png C:\Users\itapi\OneDrive\מסמכים\ Visual2013\Projects\bin\bin\Debug\7.png C:\Users\itapi\Draw\מסמכים\מסמכיםVisual 2013\Projects\Draw\Draw\bin\Debug\8.png C:\用户\itapi\OneDrive\מסמכים\Visual 2013\Projects\Draw\bin\Debug\9.png

由于某些原因,我无法获得一个正确的字母顺序排序列表,我也尝试使用LINQ Sort()方法,但没有成功。

寻找解决之道。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2016-09-01 20:39:42

原因是它是一个字符串,所以它是按照字符串排序规则排序的。你想要做的是把它的数字部分取下来,然后按它来订购:

代码语言:javascript
复制
Directory.GetFiles(Directory.GetCurrentDirectory(), "*.png")
         .OrderBy(f => int.Parse(f.Split('.')[0])); 

如果不使用Split,则可以使用Scott的建议使用GetFileNameWithoutExtension

代码语言:javascript
复制
Directory.GetFiles(Directory.GetCurrentDirectory(), "*.png")
         .OrderBy(f => int.Parse(Path.GetFileNameWithoutExtension(f))); 

请记住,这是一个天真的解决方案,假定所有的文件名都是(number).png__。如果不是这种情况,您可以先检查它是否是一个数字,然后解析

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

https://stackoverflow.com/questions/39280496

复制
相关文章

相似问题

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