He leído que no es aconsejable usar ToUpper y ToLower para realizar comparaciones de cadenas que no distinguen entre mayúsculas y minúsculas, pero no veo otra alternativa cuando se trata de LINQ-to-SQL. LINQ-to-SQL ignora los argumentos ignoreCase y CompareOptions de String.Compare (si está utilizando una base de datos que distingue entre mayúsculas y minúsculas, obtendrá una comparación entre mayúsculas y minúsculas, incluso si solicita una comparación que no distinga entre mayúsculas y minúsculas). ¿Es ToLower o ToUpper la mejor opción aquí? ¿Es uno mejor que el otro? Pensé que leí en alguna parte que ToUpper era mejor, pero no sé si eso se aplica aquí. (Estoy haciendo muchas revisiones de código y todos están usando ToLower).
Dim s = From row In context.Table Where String.Compare(row.Name, "test", StringComparison.InvariantCultureIgnoreCase) = 0
Esto se traduce en una consulta SQL que simplemente compara row.Name con "test" y no devolverá "Test" y "TEST" en una base de datos sensible a mayúsculas y minúsculas.
LINQQuery.Contains("VaLuE", StringComparer.CurrentCultureIgnoreCase)
yLINQQuery.Except(new string[]{"A VaLUE","AnOTher VaLUE"}, StringComparer.CurrentCultureIgnoreCase)
. Wahoo!