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