【发布时间】:2013-05-24 16:03:57
【问题描述】:
我有以下数组
[0] = GB_22_T0001.jpg
[1] = GB_22_T0002.jpg
[2] = GB_22_T0003.jpg
[3] = GB_22_T0006.jpg
[4] = GB_22_T0007.jpg
[5] = GB_22_T0008.jpg
[6] = GB_22_T0009.jpg
[7] = GB_22_T00010.jpg
[8] = GB_22_T00011.jpg
[9] = GB_22_T00012.jpg
[10] = GB_22_T00013.jpg
我已将这些项目放入列表框中,并注意到“GB_22_T00010”直接出现在“GB_22_T0001”之后而不是“GB_22_T0002”
似乎是 c# 的一个常见问题,但找不到该问题的常见答案。
我尝试使用 Array.sort(data) 对数组进行排序,还尝试了 LinQ 的 OrderBy 方法,但都没有帮助。
谁有解决办法?
【问题讨论】:
-
您存储的实际物品是什么?如果每个都已经是一个对象,只需向其中添加一个变量来存储最后一个数字部分,然后使用 LINQ 对其进行排序。
-
这是预期的,因为您正在按字符串排序。如果您想进行混合比较,那么 SO 提供的#2“相关”问题的答案是:Sorting an array of folder names like Windows Explorer (Numerically and Alphabetically)(很惊讶您说您找不到一个共同的答案,因为它就在那里。)
-
看起来文件名的人犯了一个愚蠢的错误。 T 后面的数字都以 000 开头,这让我觉得他们意识到了这一点,但是当数字增长到更多位数时,他们不会使用该填充!我希望看到... 0008 0009 0010 0011 0012 ...