您指定使用不变区域性的比较规则来比较字符串。显然,在不变文化中,两个字符串不被视为相等。
您可以使用 String.Compare 以特定于区域性的方式比较它们,并提供要比较字符串的区域性:
if(String.Compare("Île", "Ile", new CultureInfo("fr-FR"), CompareOptions.None)==0)
请注意,在法国文化中,这些字符串也被认为是不同的。我提供的示例是为了表明,定义排序规则的是文化。您也许能够找到一种适合您要求的文化,或者使用所需的比较规则构建自定义文化,但这可能不是您想要的。
对于规范化字符串以使其没有重音符号的一个很好的示例,看看这个问题 https://stackoverflow.com/questions/249087/how-do-i-remove-diacritics-accents-from-a-string-in-net。规范化字符串后,您将能够比较它们并认为它们相等。这可能是实现您的要求的最简单的方法。
Edit
在 InvariantCulture 中,不仅仅是 I 字符具有此行为,此语句也会返回 false:
String.Equals("Ilê", "Ile", StringComparison.InvariantCultureIgnoreCase)
该框架做了正确的事情 - 这些字符实际上在大多数文化中都是不同的(具有不同的含义),因此不应将它们视为相同。