У меня есть Func<ProductItemVendor, bool>
, хранящийся в CompareProductItemVendorIds
. Я хотел бы использовать это выражение в запросе LINQ.Использование Func <> в запросе LINQ
Он появляется следующее юридическое:
var results =
Repository.Query<ProductItemVendor>().Where(CompareProductItemVendorIds);
Однако следующий не является законным:
var results = from v in Repository.Query<ProductItemVendor>()
where CompareProductItemVendorIds(v)
select v;
Этот код выдает ошибку:
The LINQ expression node type 'Invoke' is not supported in LINQ to Entities.
Вопросы:
Почему эти заявления настолько разные, что мой
Func<>
является законным в одном, но не другом? Я думал, что они оба в основном сделали то же самое.Как это сделать? Нужно ли мне объяснять, создать
Func<>
вместоExpression<Func<>>
?
См. Мой родственный вопрос: Using Expression<Func<>> in a LINQ Query.
нуб вопрос: 'CompareProductItemVendorIds 'в первом примере совпадает с' CompareProductItemVendorIds (v) 'во втором? – Kapol
@ Kapol: Да, здесь хранится мой 'Func <>', который я описал в первом абзаце. –
Посмотрите на [LINQKit] (http://www.albahari.com/nutshell/linqkit.aspx), чтобы помочь вам составить запросы от выражений. –