Я использую Linq-to-SQL и использую скомпилированный Linq для повышения производительности.
У меня есть таблица пользователей с полем INT
под названием «LookingFor», которое может принимать следующие значения: 1,2,3,12,123,13,23
.
Я написал запрос для возврата пользователей на основе столбца «LookingFor» и хочу вернуть всех пользователей, которые содержат значение «LookingFor» (не только те, которые равны ему).
Например, если user.LookingFor = 12
, а параметром запроса является 1
, и этот пользователь должен быть выбран.
private static Func<NeDataContext, int, IQueryable<int>>
MainSearchQuery = CompiledQuery.Compile((NeDataContext db, int lookingFor) =>
(from u in db.Users
where (lookingFor == -1 ? true : u.LookingFor.ToString().Contains(lookingFor)
select u.username);
Это работает на несоответствующем linq, но выдает ошибку при использовании скомпилированного.
Как мне это исправить с помощью скомпилированного Linq?
Я получаю эту ошибку:
Для метода String.Contains поддерживаются только аргументы, которые можно оценить на клиенте.