Por que string.Compare parece lidar com caracteres acentuados de forma inconsistente?

Se eu executar a seguinte declaração:

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

O resultado é '-1', indicando que 'mun' tem um valor numérico menor que 'mün'.

No entanto, se eu executar esta declaração:

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

Eu recebo '1', indicando que 'Muntelier, Schewiz' deve durar.

Isso é um bug na comparação? Ou, mais provavelmente, existe uma regra que eu deveria levar em conta ao classificar strings contendo sotaque

A razão pela qual isso é um problema é que estou classificando uma lista e, em seguida, fazendo um filtro binário manual para obter todas as seqüências começando com 'xxx'.

Anteriormente eu estava usando o método Linq 'Where', mas agora eu tenho que usar essa função personalizada escrita por outra pessoa, porque ele diz que tem um desempenho melhor.

Mas a função personalizada não parece levar em conta as regras do 'unicode' que o .NET possui. Então, se eu disser para filtrar por 'mün', ele não encontrará nenhum item, mesmo que haja itens na lista começando com 'mun'.

Isso parece ser devido à ordem inconsistente de caracteres acentuados, dependendo de quais caracteres vão após o caractere acentuado.

OK, acho que consertei o problema.

Antes do filtro, eu faço um tipo baseado no primeiron letras de cada corda, onden é o comprimento da string de pesquisa.

questionAnswers(3)

yourAnswerToTheQuestion