首頁 > 後端開發 > C++ > 自訂 IComparer 如何增強 Linq OrderBy 以進行非標準字串排序?

自訂 IComparer 如何增強 Linq OrderBy 以進行非標準字串排序?

DDD
發布: 2025-01-01 08:37:13
原創
193 人瀏覽過

How Can a Custom IComparer Enhance Linq OrderBy for Non-Standard String Sorting?

使用自訂 IComparer與 Linq OrderBy

在 Linq 中,OrderBy 方法預設使用元素的自然排序。然而,當處理複雜的資料類型(例如具有特定格式的字串)時,需要自訂 IComparer 。可能需要實作所需的排序行為。

其中一個場景涉及對格式為「yyyyMMdd/nn」的發票編號清單進行排序。由於同時存在數字和字母數字字符,預設排序會產生不正確的結果。

建立自訂比較器 MyComparer,用於將發票編號解析為各個部分並根據它們進行排序。但是,MyComparer 的初始實作僅將發票編號的各個組成部分作為字串進行比較。這會導致發票號碼按字典順序而不是數字順序排序。

MyComparer 的更正版本會在比較發票號碼元件之前將其轉換為整數,確保按照預期的數字順序進行排序。這是透過使用 int.Parse() 將字串轉換為整數來實現的。

此外,為了反映在 ApplySortCore 方法中所做的更改,項目清單必須指派回 BindingList:

this.Items = items;
登入後複製

透過這些修改,MyComparer 會依照所需順序正確排序發票編號,確保綁定清單會相應更新。

以上是自訂 IComparer 如何增強 Linq OrderBy 以進行非標準字串排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板