[问题] 有关于get 到 file 排序问题

楼主: ChenRobert (罗伯陈)   2020-08-09 22:34:11
我是写C#去get 全部档案,然后印在listbox 上面,但是会有个问题。
我资料夹档案排序是这样子 A指的是任意字串
1A 5A 10A 100A 150A 160A 180A ...
数字小的会在前面
然而自己做的会这样
100A 150A 160A 180A 10A 1A 5A...
listbox会印出这样
请问要如何修正才会像我自己资料夹看到的排序?
像是1,排在最前面,但是只撷取第一数字做排列,在撷取第二数字做排列
我想要的就是像是先从全部数字看成一组做排序,请问要怎么用?
作者: Nilife (Al-Qaeda)   2020-08-10 17:40:00
你确定资料夹是按名称排序吗?这种需求应该是要先切文字,转数字,再递增排序或是从别的条件比如最后写入时间
作者: DeathTemp (邦迪亚的小金鱼)   2020-08-10 18:04:00
把抓到的每个档名前面补零补满到跟最长档名一样长之后再开始排序
作者: kobe8112 (小B)   2020-08-10 22:38:00
自己依照需求排完再放到listbox上吧
作者: Litfal (Litfal)   2020-08-11 19:53:00
Windows档案总管排序有做特别处理,建议自己写算法排,或www.pinvoke.net/default.aspx/shlwapi.strcmplogicalw用这个排,只是pinvoke对你来说可能不会比较简单
作者: name2name2 (yang~hi)   2020-08-12 20:50:00
自己写算法可以例如List物件的类加一个属性那个属性把原本的档名去掉txt的日期文字转成DateTimeDateTime属性就可以用OrderBy了或者直接在OrderBy的时候转换例如listSource.OrderBy(obj => Convert.ToDateTime(obj.FileName.Repalce(".txt",""));
作者: awwseed (MOTO RIDER)   2020-08-12 21:55:00
orderby ascii 看看?
楼主: ChenRobert (罗伯陈)   2020-08-12 22:02:00
感谢,处理好了pinvoke好用
作者: awwseed (MOTO RIDER)   2020-08-12 22:10:00

Links booklink

Contact Us: admin [ a t ] ucptt.com