Se a consulta LINQ for executada no contexto do banco de dados, uma chamada para Contains()
será mapeada para o LIKE
operador:
.Where(a => a.Field.Contains("hello"))
torna-se Field LIKE '%hello%'
. O LIKE
operador não diferencia maiúsculas de minúsculas por padrão, mas isso pode ser alterado alterando o agrupamento da coluna .
Se a consulta LINQ for executada no contexto .NET, você poderá usar IndexOf () , mas esse método não é suportado no LINQ to SQL.
O LINQ to SQL não oferece suporte a métodos que usam um CultureInfo como parâmetro, provavelmente porque não pode garantir que o servidor SQL manipule culturas da mesma forma que o .NET. Isso não é totalmente verdade, porque ele faz suporte StartsWith(string, StringComparison)
.
No entanto, ele não parece oferecer suporte a um método que é avaliado LIKE
em LINQ to SQL e em uma comparação sem distinção entre maiúsculas e minúsculas no .NET, tornando impossível executar Contains () sem diferenciação de maiúsculas e minúsculas de maneira consistente.