Список фильтров как параметр в скомпилированном запросе
У меня есть следующий скомпилированный запрос, который я хочу вернуть список "групп", которые не имеют "GroupID", который содержится в отфильтрованном списке:
CompiledQuery.Compile(ConfigEntities contexty, List<int> list) =>
from c in context.Groups
where (!csList.Contains(c.GroupID))
select c).ToList()
Однако я получаю следующую ошибку во время выполнения:
Указанный параметр 'category' типа 'System.Collections.Generic.List`1[[System.Int32, mscorlib, версия =2.0.0.0, Culture= нейтральный, PublicKeyToken=b77a5c261364e126]]' недопустим. Поддерживаются только скалярные параметры (такие как Int32, Decimal и Guid).
Есть идеи?
1 ответ
Решение
Этот запрос будет хорошо работать в EF 4.
В EF 1 IEnumerable.Contains
не поддерживается в L2E (с или без CompiledQuery
). Есть обходной путь, хотя; Google "BuildContainsExpression`, или посмотрите здесь.