使用自訂 IComparer
在 Linq 中,OrderBy 方法預設使用元素的自然排序。然而,當處理複雜的資料類型(例如具有特定格式的字串)時,需要自訂 IComparer
其中一個場景涉及對格式為「yyyyMMdd/nn」的發票編號清單進行排序。由於同時存在數字和字母數字字符,預設排序會產生不正確的結果。
建立自訂比較器 MyComparer,用於將發票編號解析為各個部分並根據它們進行排序。但是,MyComparer 的初始實作僅將發票編號的各個組成部分作為字串進行比較。這會導致發票號碼按字典順序而不是數字順序排序。
MyComparer 的更正版本會在比較發票號碼元件之前將其轉換為整數,確保按照預期的數字順序進行排序。這是透過使用 int.Parse() 將字串轉換為整數來實現的。
此外,為了反映在 ApplySortCore 方法中所做的更改,項目清單必須指派回 BindingList:
this.Items = items;
透過這些修改,MyComparer 會依照所需順序正確排序發票編號,確保綁定清單會相應更新。
以上是自訂 IComparer 如何增強 Linq OrderBy 以進行非標準字串排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!