尝试使用ICU extension for .NET创建新的排序规则:
var newCollation = Icu.Collation.Collator.Create("Cyrillic_General_CI_AS");
发生以下异常:
icu.net.dll中发生未处理的“System.ArgumentException”类型的异常附加信息:无法使用给定的localeId创建collator。这可能是因为ICU数据文件是在没有此区域设置的排序规则的情况下创建的。您可以自己提供规则或替换数据dll。
您提供的排序规则标识符是SQL Server使用的表单,但ICU使用locale来标识排序规则。 Cyrillic General由俄语,保加利亚语和许多其他使用西里尔文字的语言使用。 CI表示不区分大小写,AS表示重音敏感,所以我会使用locale ru-RU-u-co-ks-level2来获得类似的行为。
ru-RU-u-co-ks-level2没有预定义的整理器。您可以传递FallBackAllowed参数,使其回退到ru。
Icu.Collation.Collator.Create("ru-RU-u-co-ks-level2", Collator.Fallback.FallbackAllowed)
或者像异常消息一样说明并定义自己的排序规则。
您可以通过查看icu4c source tree来查看预定义的合作者。