<p>InvariantCulture</p>
<p>Utilise un ensemble “standard” d’ordres de caracteres (a, b, c, … etc.). Cela contraste avec certaines locales specifiques, qui peuvent trier les caracteres dans des ordres differents (‘a-avec-accent’ peut etre avant <em><strong>ou</strong></em> apres ‘a’, selon la locale, et ainsi de suite).</p>
<p>Ordinal</p>
<p>D’autre part, examine uniquement les valeurs des octets bruts qui representent le caractere.</p>
<p>Il y a un excellent exemple sur <a href="http://msdn.microsoft.com/en-us/library/e6883c06.aspx">https://learn.microsoft.com/en-us/dotnet/api/system.string.compare</a> qui montre les resultats des differentes valeurs de StringComparison. Tout a la fin, il montre (extrait) :</p>
<pre><code class="lang-auto">StringComparison.InvariantCulture:
LATIN SMALL LETTER I (U+0069) is less than LATIN SMALL LETTER DOTLESS I (U+0131)
LATIN SMALL LETTER I (U+0069) is less than LATIN CAPITAL LETTER I (U+0049)
LATIN SMALL LETTER DOTLESS I (U+0131) is greater than LATIN CAPITAL LETTER I (U+0049)
StringComparison.Ordinal:
LATIN SMALL LETTER I (U+0069) is less than LATIN SMALL LETTER DOTLESS I (U+0131)
LATIN SMALL LETTER I (U+0069) is greater than LATIN CAPITAL LETTER I (U+0049)
LATIN SMALL LETTER DOTLESS I (U+0131) is greater than LATIN CAPITAL LETTER I (U+0049)
</code></pre>
<p>Vous pouvez voir que la ou InvariantCulture donne (U+0069, U+0049, U+00131), Ordinal donne (U+0049, U+0069, U+00131).</p>