Я использую Linq-to-SQL, и я использую скомпилированный Linq для лучшей производительности.Скомпилированный Linq & String.Contains
У меня есть таблица пользователей с полем 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.
Что ошибка вы получаете? – Rik
Кроме того, скомпилированный LinQ может быть менее полезным, чем вы думаете, см .: http://www.codinghorror.com/blog/2010/03/compiled-or-bust.html – Rik