[問題] 有關於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