Я создаю настольное приложение winforms, а база данных приложения - Sqlite.
Я использую Linq для сущностей с Sqlite ADO.NET провайдером .
В моем приложении мне нужно искать строку внутри текстового столбца.
Пример (IsNotEmpty - это мой метод расширения для! String.IsNullOrEmpty (str)):
if (param.FirstName.IsNotEmpty())
{
selectedCustomers = selectedCustomers.Where(c => (c.firstName.Contains(param.FirstName)));
}
if (param.LastName.IsNotEmpty())
{
selectedCustomers = selectedCustomers.Where(c => c.lastName.Contains(param.LastName));
}
Проблема в том, что этот запрос переводится в функцию CHARINDEX SQL, а Sqlite его не поддерживает.
Когда я переключаюсь на функцию IndexOf (строка) (, как предлагается здесь ), запрос переводится также в CHARINDEX.
Когда я переключаюсь на IndexOf (строка, индекс), я получаю следующую ошибку:
LINQ to Entities не распознает метод метода Int32 IndexOf (System.String, Int32), и этот метод нельзя преобразовать в выражение хранилища.
Есть идеи? Стоит ли переходить на Access?