jjzjj

stringcomparer

全部标签

c# - 带元组键的不区分大小写的字典

我有一个字典,其中的键是一个元组,其中第一项是日期,第二项是字符串。我希望字典不区分大小写。我知道如果键只是一个字符串,我可以在声明字典时将StringComparer.OrdinalIgnoreCase作为参数传递,但是当键是元组时这似乎不起作用。有没有办法指定StringComparer用于元组的第二项?谢谢 最佳答案 使用thisoverloadDictionary构造函数的一部分,它允许您为键指定自定义比较器。你会伴随着创建一个类来实现IEqualityComparer>可能看起来像这样:classCustomEqualit

c# - 什么.NET StringComparer 相当于 SQL 的 Latin1_General_CI_AS

我在我的数据库和我的C#代码之间实现了一个缓存层。这个想法是根据查询的参数缓存某些数据库查询的结果。数据库使用默认排序规则-SQL_Latin1_General_CP1_CI_AS或Latin1_General_CI_AS,我相信基于一些简短的谷歌搜索,这等同于相等,只是排序不同。我需要一个.NETStringComparer,它可以为我提供相同的行为,至少对于相等性测试和哈希码生成,就像数据库的排序规则正在使用的那样。目标是能够在C#代码中的.NET字典中使用StringComparer来确定特定字符串键是否已在缓存中。一个真正简化的例子:varcomparer=StringComp

c# - 带有 StringComparer 序列化的 Json.NET Dictionary<string,T>

我有一本字典Dictionary>.外部字典和内部字典都有一个相等比较器集(在我的例子中是StringComparer.OrdinalIgnoreCase)。字典序列化和反序列化后,两个字典的比较器未设置为StringComparer.OrdinalIgnoreCase.如果您可以控制代码中字典的创建,则可以创建一个继承自字典的类,并在该类的默认构造函数中设置比较器。但是,如果您无法控制字典的创建,而是从其他代码获取字典怎么办?有没有办法用比较器正确地序列化/反序列化它? 最佳答案 一个简单的想法是创建Dictionary的子类将比

c# - 使用哪个版本的 StringComparer

如果我想要一个不区分大小写的字符串键控字典,在给定这些约束的情况下,我应该使用哪个版本的StringComparer:字典中的键来自C#代码或仅以英语语言环境(美国或英国)编写的配置文件软件已国际化,可在不同地区运行我通常使用StringComparer.InvariantCultureIgnoreCase但不确定这是否是正确的大小写。这是示例代码:Dictionarystuff=newDictionary(StringComparer.InvariantCultureIgnoreCase); 最佳答案 比较器分为三种:文化意识文化

c# - System.StringComparer 和 System.StringComparison 类之间的区别?

这两个类有什么区别?我使用了System.StringComparer.OrdinalIgnoreCase()和System.StringComparison.OrdinalIgnoreCase()并且都产生了相同的结果。它们有什么区别还是一样? 最佳答案 StringComparer是Class它实现了类似IComparer的比较接口(interface),IEqualityComparer,IComparer,这样它就可以用来比较两个字符串。StringComparison只是一个Enum你可以传递给某些方法来指示你想要哪种比较