[問題] 有關於get 到 file 排序問題

看板C_Sharp (C#)作者 (羅伯陳)時間3年前 (2020/08/09 22:34), 3年前編輯推噓2(2017)
留言19則, 7人參與, 3年前最新討論串1/1
我是寫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://www.ptt.cc/bbs/C_Sharp/M.1596983653.A.70E.html

08/10 17:40, 3年前 , 1F
你確定資料夾是按名稱排序嗎?
08/10 17:40, 1F

08/10 17:42, 3年前 , 2F
這種需求應該是要先切文字,轉數字,再遞增排序
08/10 17:42, 2F

08/10 17:42, 3年前 , 3F
或是從別的條件比如最後寫入時間
08/10 17:42, 3F

08/10 18:04, 3年前 , 4F
把抓到的每個檔名前面補零補滿到跟最長檔名一樣長
08/10 18:04, 4F

08/10 18:04, 3年前 , 5F
之後再開始排序
08/10 18:04, 5F
https://0rz.tw/6yMbt 資料夾上 12/1 是顯示第一個! 可是我開頭就是顯示12/10。 所以很好奇要怎樣才能用得像資料夾那樣排序。 tempFile = Directory.GetFiles(DirectoryPath); 我是這樣子取得資料夾所有檔案的。 ※ 編輯: ChenRobert (1.34.193.134 臺灣), 08/10/2020 21:01:51

08/10 22:38, 3年前 , 6F
自己依照需求排完再放到listbox上吧
08/10 22:38, 6F

08/11 19:53, 3年前 , 7F
Windows檔案總管排序有做特別處理,建議自己寫算法排,或
08/11 19:53, 7F

08/11 19:56, 3年前 , 8F
www.pinvoke.net/default.aspx/shlwapi.strcmplogicalw
08/11 19:56, 8F

08/11 19:57, 3年前 , 9F
用這個排,只是pinvoke對你來說可能不會比較簡單
08/11 19:57, 9F

08/12 20:50, 3年前 , 10F
自己寫算法可以例如List物件的類加一個屬性
08/12 20:50, 10F

08/12 20:51, 3年前 , 11F
那個屬性把原本的檔名去掉txt的日期文字轉成DateTime
08/12 20:51, 11F

08/12 20:52, 3年前 , 12F
DateTime屬性就可以用OrderBy了
08/12 20:52, 12F

08/12 20:53, 3年前 , 13F
或者直接在OrderBy的時候轉換例如
08/12 20:53, 13F

08/12 20:54, 3年前 , 14F
listSource.OrderBy(obj => Convert.ToDateTime(obj.F
08/12 20:54, 14F

08/12 20:55, 3年前 , 15F
ileName.Repalce(".txt",""));
08/12 20:55, 15F

08/12 21:55, 3年前 , 16F
orderby ascii 看看?
08/12 21:55, 16F

08/12 22:02, 3年前 , 17F
感謝,處理好了
08/12 22:02, 17F

08/12 22:02, 3年前 , 18F
pinvoke好用
08/12 22:02, 18F

08/12 22:10, 3年前 , 19F
文章代碼(AID): #1VC0bbSE (C_Sharp)
文章代碼(AID): #1VC0bbSE (C_Sharp)