作者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/m.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