Si la consulta LINQ se ejecuta en el contexto de la base, una llamada a Contains()
está asignada al operador LIKE
:
.Where(a => a.Field.Contains("hello"))
convierte Field LIKE '%hello%'
. El operador LIKE
distingue entre mayúsculas y minúsculas por defecto, pero puede cambiarse por changing the collation of the column.
Si la consulta LINQ se ejecuta en contexto .NET, puede usar IndexOf(), pero ese método no es compatible con LINQ to SQL.
LINQ to SQL does not support methods que toma un CultureInfo como parámetro, probablemente porque no puede garantizar que el servidor SQL maneje culturas de la misma manera que .NET. Esto no es completamente cierto, porque hace admite StartsWith(string, StringComparison)
.
Sin embargo, no parece ser compatible con un método que evalúa LIKE
en LINQ to SQL, y con una comparación insensible a mayúsculas/minúsculas en .NET, lo que hace imposible hacer insensible a mayúsculas/minúsculas() de manera consistente.
respuesta de Sjoerd debe marcarse como la correcta – fubo