ホームページ > バックエンド開発 > C++ > カスタム IComparer は、非標準の文字列ソートのために Linq OrderBy をどのように強化できますか?

カスタム IComparer は、非標準の文字列ソートのために Linq OrderBy をどのように強化できますか?

DDD
リリース: 2025-01-01 08:37:13
オリジナル
183 人が閲覧しました

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

カスタム IComparer の使用 with Linq OrderBy

Linq では、OrderBy メソッドはデフォルトで要素の自然な順序を使用します。ただし、特定の書式設定を持つ文字列などの複雑なデータ型を扱う場合、カスタム IComparer目的の並べ替え動作を実現するには、必要な場合があります。

そのようなシナリオの 1 つは、請求書番号のリストを「yyyyMMdd/nn」形式で並べ替えることを含みます。デフォルトの順序付けでは、数字と英数字の両方が存在するため、不正確な結果が生成されます。

カスタム比較関数 MyComparer が作成され、請求書番号を各部分に解析し、それに基づいて並べ替えられます。ただし、MyComparer の初期実装では、請求書番号の個々のコンポーネントを文字列として比較するだけです。この結果、請求書番号は数値ではなく辞書順に並べ替えられます。

MyComparer の修正バージョンでは、請求書番号の構成要素を比較する前に整数に変換し、予想される番号順で並べ替えが行われるようにします。これは、int.Parse() を使用して文字列を整数に変換することによって実現されます。

さらに、ApplySortCore メソッドで行われた変更を反映するには、項目リストを BindingList< の Items プロパティに再度割り当てる必要があります。 T>:

this.Items = items;
ログイン後にコピー

これらの変更により、MyComparer は請求書番号を目的の順序で正しく並べ替えます。順序に従ってバインディング リストが更新されるようにします。

以上がカスタム IComparer は、非標準の文字列ソートのために Linq OrderBy をどのように強化できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート