作者ChenRobert (罗伯陈)
看板C_Sharp
标题[问题] 有关於get 到 file 排序问题
时间Sun Aug 9 22:34:11 2020
我是写C#去get 全部档案,然後印在listbox 上面,但是会有个问题。
我资料夹档案排序是这样子 A指的是任意字串
1A 5A 10A 100A 150A 160A 180A ...
数字小的会在前面
然而自己做的会这样
100A 150A 160A 180A 10A 1A 5A...
listbox会印出这样
请问要如何修正才会像我自己资料夹看到的排序?
像是1,排在最前面,但是只撷取第一数字做排列,在撷取第二数字做排列
我想要的就是像是先从全部数字看成一组做排序,请问要怎麽用?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.34.193.134 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1596983653.A.70E.html
1F:→ Nilife: 你确定资料夹是按名称排序吗? 08/10 17:40
2F:→ Nilife: 这种需求应该是要先切文字,转数字,再递增排序 08/10 17:42
3F:→ Nilife: 或是从别的条件比如最後写入时间 08/10 17:42
4F:推 DeathTemp: 把抓到的每个档名前面补零补满到跟最长档名一样长 08/10 18:04
5F:→ DeathTemp: 之後再开始排序 08/10 18:04
https://0rz.tw/6yMbt
资料夹上 12/1 是显示第一个! 可是我开头就是显示12/10。
所以很好奇要怎样才能用得像资料夹那样排序。
tempFile = Directory.GetFiles(DirectoryPath);
我是这样子取得资料夹所有档案的。
※ 编辑: ChenRobert (1.34.193.134 台湾), 08/10/2020 21:01:51
6F:→ kobe8112: 自己依照需求排完再放到listbox上吧 08/10 22:38
7F:推 Litfal: Windows档案总管排序有做特别处理,建议自己写算法排,或 08/11 19:53
8F:→ Litfal: www.pinvoke.net/default.aspx/shlwapi.strcmplogicalw 08/11 19:56
9F:→ Litfal: 用这个排,只是pinvoke对你来说可能不会比较简单 08/11 19:57
10F:→ name2name2: 自己写算法可以例如List物件的类加一个属性 08/12 20:50
11F:→ name2name2: 那个属性把原本的档名去掉txt的日期文字转成DateTime 08/12 20:51
12F:→ name2name2: DateTime属性就可以用OrderBy了 08/12 20:52
13F:→ name2name2: 或者直接在OrderBy的时候转换例如 08/12 20:53
14F:→ name2name2: listSource.OrderBy(obj => Convert.ToDateTime(obj.F 08/12 20:54
15F:→ name2name2: ileName.Repalce(".txt","")); 08/12 20:55
16F:→ awwseed: orderby ascii 看看? 08/12 21:55
17F:→ ChenRobert: 感谢,处理好了 08/12 22:02
18F:→ ChenRobert: pinvoke好用 08/12 22:02