c# – 使用StringComparison.Ordinal对String进行排序的最简单方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 使用StringComparison.Ordinal对String进行排序的最简单方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1280字,纯文字阅读大概需要2分钟。
内容图文
![c# – 使用StringComparison.Ordinal对String进行排序的最简单方法](/upload/InfoBanner/zyjiaocheng/759/6434463b01164951b8d566c6b0926f35.jpg)
我发现了一个由于String.CompareTo和二进制搜索而导致的错误(在我的代码中),因为我的自定义IComparer(用于包装类型)使用String.Compare(x,y,StringComparison.Ordinal).
这是因为用于构建要搜索的Array的items.OrderBy(i => i.Name)(其中Name是string类型)使用字符串对象本身作为IComparable – 并且具有不同的规则:
The comparison uses the current culture to obtain culture-specific information such as casing rules and the alphabetic order of individual characters. For example, a culture could specify that certain combinations of characters be treated as a single character, or uppercase and lowercase characters be compared in a particular way, or that the sorting order of a character depends on the characters that precede or follow it.
例如,{A,b,C}使用OrderBy-using-Default-String-Compare排序为[A,b,C],但按顺序比较应该是[b,A,C] – 因为它不是,二进制搜索失败.
现在,随着“背景”的出现,
什么是最简单的(例如,没有为字符串实现自定义IComparer)的方式来命令具有字符串属性的对象与String.Compare(..,StringComparison.Ordinal)相同?
编辑:我[刚刚意识到我]可以,也许应该只使用OrderBy(x => x,theSameComparer) – 但是假设这是不可能的,OrderBy如何使用相同的结果?
解决方法:
有一个预先构建的StringComparer适用于StringComparison.Ordinal – 即StringComparer.Ordinal:
items.OrderBy(i => i.Name, StringComparer.Ordinal)
内容总结
以上是互联网集市为您收集整理的c# – 使用StringComparison.Ordinal对String进行排序的最简单方法全部内容,希望文章能够帮你解决c# – 使用StringComparison.Ordinal对String进行排序的最简单方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。