其實這是一個小事情,只是因為最近有用到不要每次寫都要查一下,乾脆自己筆記一下
簡單的說我有一堆身為字串的數字 因為增加難度 該文字為
"10,11,12,13,014,15,21,22,23,24,25,111,112,113,0114,115" 用逗點隔開但是每個都是字串
這時候,我需要將裡面的數字排序呢?
1. 直接排序 OrderBy(x=>x)
但是這不是我們要的吧,這時候 111 排在 11 之後就字串來看很合邏輯,但是不符合數值上的邏輯,於是網路上看到有一個做法
2. 先根據長度排序之後再排序 OrderBy(x => x.Length).ThenBy(x => x)
這問題大致上沒問題,但是如果遇到前面有 0 就會因為先排長度而出現錯誤,如果你的數字字串們前面沒有0,就可以用這一招。
3. 承襲第二招,但是先把前面的 0 拿掉 .Select(x=>x.TrimStart('0')).OrderBy(x => x.Length).ThenBy(x => x)
4. 大絕招,直接 parse 成 數字 然後再排序,這招其實最直覺最常用,但是相對也比較消耗資源
至於要用哪一個,就看你的需求了
reference :