首页 > 后端开发 > 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
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板