Если запрос LINQ выполняется в контексте базы данных, вызов Contains()
сопоставляется LIKE
оператору:
.Where(a => a.Field.Contains("hello"))
становится Field LIKE '%hello%'
. По LIKE
умолчанию оператор нечувствителен к регистру, но это можно изменить, изменив параметры сортировки столбца. .
Если запрос LINQ выполняется в контексте .NET, вы можете использовать IndexOf () , но этот метод не поддерживается в LINQ to SQL.
LINQ to SQL не поддерживает методы, которые принимают CultureInfo в качестве параметра, возможно потому, что он не может гарантировать, что SQL-сервер обрабатывает культуры так же, как .NET. Это не совсем верно, потому что это поддерживает StartsWith(string, StringComparison)
.
Однако, похоже, что он не поддерживает метод, который оценивает LIKE
в LINQ to SQL, и сравнение без учета регистра в .NET, что делает невозможным последовательное выполнение независимого от регистра метода Contains ().