我有一个带有街名的SortedList
Dim orderedListStreet As New Generic.SortedList(Of String, String)(StringComparer.CurrentCulture)例如,列表中已经包含了"Hauptstrasse“
如果我添加"Hauptstraße",它会抛出一个异常-> Key does already exist
有人知道如何添加"Hauptstrasse“和"Hauptstraße”吗?
发布于 2013-11-05 20:28:52
您可以使用认为它们不同的比较器。在德国,我希望Hauptstrasse和Hauptstraçe是同一条街,所以德国文化认为它们是平等的是合乎逻辑的。
使用哪一个将取决于您的需求-最快的将是StringComparer.Ordinal或StringComparer.OrdinalIgnoreCase。
如果您希望进行区分区域性的排序,但又希望将区域性认为相同的两个字符串视为不同的字符串,则一种解决方案是实现您自己的比较器,例如:
int MyComparer(string x, string y)
{
var result = StringComparer.CurrentCulture.Compare(x,y);
if (result == 0) result = StringComparer.Ordinal.Compare(x,y);
return result;
}这基于CurrentCulture进行排序,但是使用序号排序来打破关系(如果它不能满足您的需要,您可以将其替换为其他值)。
https://stackoverflow.com/questions/19788860
复制相似问题