Tag: stringcomparer

匿名类型可以inheritance其他类型吗?

根据StringComparer.OrdinalIgnoreCase属性的MSDN文档: OrdinalIgnoreCase属性实际上返回从StringComparer类派生的匿名类的实例。 这是一个我不熟悉的function – 带inheritance的匿名类型吗? 或者通过“匿名类”,作者只是意味着“从StringComparer派生的内部类,对客户端代码不可见”?

什么.NET StringComparer等同于SQL的Latin1_General_CI_AS

我正在我的数据库和我的C#代码之间实现一个缓存层。 我们的想法是根据参数将某些数据库查询的结果缓存到查询中。 数据库正在使用默认排序SQL_Latin1_General_CP1_CI_AS – SQL_Latin1_General_CP1_CI_AS或Latin1_General_CI_AS ,我相信基于一些简短的谷歌搜索相当于相等,只是排序不同。 我需要一个.NET StringComparer,它可以给我相同的行为,至少对于相等测试和哈希码生成,正如数据库的排序规则所使用的那样。 目标是能够在C#代码中的.NET字典中使用StringComparer来确定特定字符串键是否已经在缓存中。 一个非常简单的例子: var comparer = StringComparer.??? // What goes here? private static Dictionary cache = new Dictionary(comparer); public static MyObject GetObject(string key) { if (cache.ContainsKey(key)) { return cache[key].Clone(); } else { // invoke SQL “select * from mytable where mykey = @mykey” // with parameter @mykey set […]

支持通配符的System.StringComparer(*)

我正在寻找一个快速的.NET类/库,它具有支持通配符(*)AND incase-sensitivity的StringComparer。 有任何想法吗?

c#SortedList .ContainsKey表示成功添加的键返回false

检查下面的更新3我发现我遇到的问题与.Net 4.0,4.0客户端和4.5的c#字符串比较器的已知严重问题有关,这将导致字符串列表的排序顺序不一致(导致输出依赖在输入的顺序和使用的排序算法)。 该问题于2012年12月向Microsoft报告,并以“不会修复”结束。 可以使用一种解决方法,但速度慢得多,对于大型集合来说几乎不实用。 在实现不可变的PatriciaTrie时,我想将其性能与System.Collections.Generic.SortedList进行比较。 我使用以下文件https://github.com/rkapsi/patricia-trie/blob/master/src/test/resources/org/ardverk/collection/hamlet.txt来创建用于测试的输入词表。 在c#SortedList中插入每个单词时,使用Comparer.Default或StringComparer.InvariantCulture作为键比较器,无法使用常规搜索方法检索成功插入的多个条目(例如ContainsKey返回false )但是通过迭代列表观察到密钥存在于列表中。 更奇怪的是,比较器在将从排序列表中检索到的密钥与使用ContainsKey无法找到的搜索关键字进行比较时返回值“0”。 下面的完整示例演示了我的系统上的这个问题。 using System; using System.IO; using System.Linq; using System.Collections.Generic; class Program { static void Main(string[] args) { // the problem is possibly related to comparison. var fail = true; var comparer = fail ? StringComparer.InvariantCulture : StringComparer.Ordinal; // read hamlet (contains duplicate words) var words = […]