我希望定义一个名为
我了解,为了能够在LINQ查询中使用此过滤器,必须将其声明为
但我在查询中使用该表达式时遇到以下问题。
首先,类似于:
CompareProductItemVendorIds
的Func<ProductItemVendor, bool>
过滤表达式,它可以在我的应用程序中使用,在Entity Framework/LINQ查询中使用较多。我了解,为了能够在LINQ查询中使用此过滤器,必须将其声明为
Expression<Func<>>
而不是Func<>
。我理解其原因,并且很容易做到这一点。但我在查询中使用该表达式时遇到以下问题。
首先,类似于:
ProductItem.ProductItemVendors.FirstOrDefault(CompareProductItemVendorIds)
注意:ProductItem
是一个数据库实体,它的ProductItemVendors
属性是一个导航集合。
会产生如下错误:
“实例参数:无法将类型为 'System.Collections.Generic.ICollection' 的对象转换为类型 'System.Linq.IQueryable'
其次,下面这段代码也会产生问题:
var results = from v in Repository.Query<ProductItemVendor>()
where CompareProductItemVendorIds(v)
select v;
产生错误:
'CompareProductItemVendorIds' 是一个 '变量',但是像一个 '方法' 一样使用了
我有一个漂亮的新 Expression<Func<>>
。我如何在我的LINQ查询中使用它?
Func<>
? - CameronThe LINQ expression node type 'Invoke' is not supported in LINQ to Entities.
请参考 https://dev59.com/IITba4cB1Zd3GeqP9a6m。 - Jonathan Wood