J'ai lu qu'il n'était pas judicieux d'utiliser ToUpper et ToLower pour effectuer des comparaisons de chaînes insensibles à la casse, mais je ne vois aucune alternative en ce qui concerne LINQ-to-SQL. Les arguments ignoreCase et CompareOptions de String.Compare sont ignorés par LINQ-to-SQL (si vous utilisez une base de données sensible à la casse, vous obtenez une comparaison sensible à la casse même si vous demandez une comparaison insensible à la casse). ToLower ou ToUpper est-il la meilleure option ici? Est-ce que l'un est meilleur que l'autre? Je pensais avoir lu quelque part que ToUpper était meilleur, mais je ne sais pas si cela s'applique ici. (Je fais beaucoup de révisions de code et tout le monde utilise ToLower.)
Dim s = From row In context.Table Where String.Compare(row.Name, "test", StringComparison.InvariantCultureIgnoreCase) = 0
Cela se traduit par une requête SQL qui compare simplement row.Name avec "test" et ne renverra pas "Test" et "TEST" sur une base de données sensible à la casse.
LINQQuery.Contains("VaLuE", StringComparer.CurrentCultureIgnoreCase)
etLINQQuery.Except(new string[]{"A VaLUE","AnOTher VaLUE"}, StringComparer.CurrentCultureIgnoreCase)
. Wahoo!