我试图在一个普通目录中获得图像路径字符串的排序列表。该目录包含43个以数字命名的图像:"1.png“、"2.png",等等。
这是我的密码:
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()方法,但没有成功。
寻找解决之道。
谢谢。
发布于 2016-09-01 20:39:42
原因是它是一个字符串,所以它是按照字符串排序规则排序的。你想要做的是把它的数字部分取下来,然后按它来订购:
Directory.GetFiles(Directory.GetCurrentDirectory(), "*.png")
.OrderBy(f => int.Parse(f.Split('.')[0])); 如果不使用Split,则可以使用Scott的建议使用GetFileNameWithoutExtension
Directory.GetFiles(Directory.GetCurrentDirectory(), "*.png")
.OrderBy(f => int.Parse(Path.GetFileNameWithoutExtension(f))); 请记住,这是一个天真的解决方案,假定所有的文件名都是(number).png__。如果不是这种情况,您可以先检查它是否是一个数字,然后解析
https://stackoverflow.com/questions/39280496
复制相似问题