2013-12-23 2 views
4

Я добавляю некоторые уникальные французские слова в отсортированный список, но это не похоже, чтобы дифференцировать определенные слова, как «Бефа» & Бефа».SortedList бросает исключение при добавлении французских символов

private static void TestSortedList() 
{ 

    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("fr-fr"); 
    SortedList sortedList = new SortedList(new Comparer(CultureInfo.CurrentCulture)); 

    try 
    { 
     sortedList.Add("bœuf", "Value1"); 
     sortedList.Add("boeuf", "Value1"); 
    } 
    catch(Exception ex) 
    { 
     Console.WriteLine(ex.ToString()); 
    } 
} 

Так следующий код выше бросает исключение «System.ArgumentException: Элемент уже был добавлен.» Пожалуйста, помогите

+1

Но разве это не то, что он должен делать? При сортировке по-французски эти два слова считаются одинаковыми. – RenniePet

+0

Привет, Джордж - есть ли способ сделать .NET рассматривать их не одинаковыми при сортировке? Мне нужно создать список, и эти 2 слова должны появиться в конечном списке. – user3129957

+0

См. Ответ ниже о том, как вы можете это сделать, этот вопрос объясняет, почему. http://stackoverflow.com/questions/492799/difference-between-invariantculture-and-ordinal-string-comparision –

ответ

1
SortedList sortedList = new SortedList(StringComparer.Ordinal); 

    try 
    { 
     sortedList.Add("bœuf", "Value1"); 
     sortedList.Add("boeuf", "Value1"); 
    } 
    catch (Exception ex) 
    { 
     Console.WriteLine(ex.ToString()); 
    } 

работы Чтобы объяснить, что Ordinal и OrdinalIgnoreCase компараторов сравнить символы на!. tes, и они различны для разных символов. См. Также Difference between InvariantCulture and Ordinal string comparison.

+1

Это работает, конечно, но трудно понять, приемлемо ли это для OP. Не используя сортировку по-французски, порядок SortedList будет другим, например, если акцентируются первые символы некоторых слов. – RenniePet

+0

Правильно, я отредактировал свое сообщение, чтобы объяснить «сравнительный образец», чтобы он мог подумать, подходит ли он или нет. – Zebi

+0

Удивительный! Большое спасибо Зеби. – user3129957

Смежные вопросы