我有一個string[]其中每個元素都以某個數字結尾的值。string[] partNumbers = new string[] {
"ABC10", "ABC1","ABC2", "ABC11","ABC10", "AB1", "AB2", "Ab11" };我正在嘗試使用以下方式對上面的數組進行排序,LINQ但沒有得到預期的結果。var result = partNumbers.OrderBy(x => x);實際結果:AB1 Ab11 AB2 ABC1 ABC10 ABC10 ABC11 ABC2預期結果AB1 AB2 AB11 ..
3 回答
一只斗牛犬
TA貢獻1784條經驗 獲得超2個贊
如果要使用LINQ和自定義比較器(如Dave Koelle的自定義比較器)按特定屬性對對象列表進行排序,則應執行以下操作:
...items = items.OrderBy(x => x.property, new AlphanumComparator()).ToList();...
您還必須更改Dave的類以從其繼承,System.Collections.Generic.IComparer<object>而不是從其繼承,IComparer因此類簽名變為:
...public class AlphanumComparator : System.Collections.Generic.IComparer<object>{
...就我個人而言,我更喜歡James McCormack的實現,因為它實現了IDisposable,盡管我的基準測試表明它稍慢一些。
- 3 回答
- 0 關注
- 809 瀏覽
添加回答
舉報
0/150
提交
取消
