我想定义一个Func<ProductItemVendor, bool>名为的过滤器表达式CompareProductItemVendorIds,它可以在我的整个应用程序中使用,主要是在实体框架/LINQ 查询中。
我了解到,为了能够在LINQ查询中使用此过滤器,我必须按照其声明Expression<Func<>>,而不是只Func<>。我了解这样做的原因,而且我很容易做到这一点。
但是我在查询中使用该表达式时遇到了以下问题。
首先,代码如:
ProductItem.ProductItemVendors.FirstOrDefault(CompareProductItemVendorIds)
Run Code Online (Sandbox Code Playgroud)
注意:ProductItem是一个数据库实体,它的ProductItemVendors属性是一个导航集合。
产生错误:
`实例参数:无法从“System.Collections.Generic.ICollection”转换为“System.Linq.IQueryable”
其次,代码如:
var results = from v in Repository.Query<ProductItemVendor>()
where CompareProductItemVendorIds(v)
select v;
Run Code Online (Sandbox Code Playgroud)
产生错误:
'CompareProductItemVendorIds' 是一个“变量”,但像“方法”一样使用
所以我有我漂亮闪亮的新Expression<Func<>>。如何在我的 LINQ 查询中使用它?