Está especificando comparar las cadenas utilizando las reglas de comparación de la cultura invariante. Evidentemente, en la cultura invariante, las dos cadenas no se consideran iguales.
Puede comparar de una manera específica de la cultura utilizando String.Compare y proporcionando la cultura para el que se desea comparar las cuerdas:
if(String.Compare("Île", "Ile", new CultureInfo("fr-FR"), CompareOptions.None)==0)
Tenga en cuenta que en la cultura francés, esas cadenas son también considerado diferente. Incluí el ejemplo para mostrar, que es la cultura la que define las reglas de clasificación. Es posible que pueda encontrar una cultura que se adapte a sus necesidades o crear una personalizada con las reglas de comparación necesarias, pero que probablemente no sea la que desea.
Para obtener un buen ejemplo de normalización de la cadena para que no haya acentos, have a look at this question. Después de normalizar la cadena, podrá compararlos y considerarlos iguales. Esta sería probablemente la forma más fácil de implementar su requerimiento.
Editar
Está no sólo el carácter I que tiene este comportamiento en el InvariantCulture, esta declaración también devuelve false:
String.Equals("Ilê", "Ile", StringComparison.InvariantCultureIgnoreCase)
El marco hace lo correcto - los personajes son de hecho diferentes (tiene un significado diferente) en la mayoría de las culturas, y por lo tanto, no deberían considerarse iguales.
Acabo de intentarlo, devuelve +1. – Bryan
Incluso si eso funcionó, me parece extraño que el problema sea particular para ese personaje. – Bryan
@Bryan: 'Î' es U + 00CE,' I' es U + 0049, son totalmente diferentes. – kennytm