Почему string.Compare, кажется, обрабатывает символы с акцентом непоследовательно?

Если я выполню следующее утверждение:

string.Compare("mun", "mün", true, CultureInfo.InvariantCulture)

Результат-1', указывая, чтомун» имеет более низкое числовое значение, чем «mün».

Однако, если я выполню это утверждение:

string.Compare("Muntelier, Schweiz", "München, Deutschland", true, CultureInfo.InvariantCulture)

Я получаю «1», указывая, чтоMuntelier, Schewiz ' должен идти последним.

Это ошибка в сравнении? Или, более вероятно, есть ли правило, которое я должен учитывать при сортировке строк, содержащих ударение

Причина в том, что яm сортирует список, а затем выполняет ручной двоичный фильтр, который 's, чтобы каждая строка начиналась с 'ххх».

Ранее я использовал Linq 'Куда' метод, но теперь я должен использовать эту пользовательскую функцию, написанную другим человеком, потому что он говорит, что она работает лучше.

Но пользовательская функция некажется, не принимать во внимание все, чтоюникода» правила .NET имеет. Так что, если я скажу это фильтровать по 'mün'это нене может найти никаких предметов, даже если в списке есть предметы, начинающиеся с 'мун.

Кажется, это из-за непоследовательного упорядочения акцентированных символов, в зависимости от того, какие символы идут после акцентированного символа.

Хорошо, я думаюмы решили проблему.

Перед фильтром делаю сортировку по первому буквы каждой строки, где n длина строки поиска.

Ответы на вопрос(3)

Ваш ответ на вопрос