【发布时间】:2023-03-22 00:34:02
【问题描述】:
我有一个Func<ProductItemVendor, bool> 存储在CompareProductItemVendorIds 中。我想在 LINQ 查询中使用该表达式。
看来以下是合法的:
var results =
Repository.Query<ProductItemVendor>().Where(CompareProductItemVendorIds);
但是,以下内容是不合法的:
var results = from v in Repository.Query<ProductItemVendor>()
where CompareProductItemVendorIds(v)
select v;
此代码产生错误:
LINQ to Entities 不支持 LINQ 表达式节点类型“Invoke”。
问题:
为什么这些声明如此不同,以至于我的
Func<>在其中一个是合法的,而另一个是不合法的?我认为他们基本上都做了同样的事情。我怎样才能做到这一点?我是否必须明确地将我的
Func<>创建为Expression<Func<>>?
请在Using Expression<Func<>> in a LINQ Query查看我的相关问题。
【问题讨论】:
-
一个菜鸟问题:第一个示例中的
CompareProductItemVendorIds是否与第二个示例中的CompareProductItemVendorIds(v)相同? -
@Kapol:是的,那是我的
Func<>的存储位置,我在第一段中对此进行了描述。 -
查看LINQKit 以帮助您从表达式中编写查询。