在IQueryable的导航属性上使用扩展方法

时间:2014-11-19 03:09:21

标签: c# linq-to-sql linq-to-entities entity-framework-5 extension-methods

在LINQ to Entities中,是否可以使用可在IQueryable中的实体的导航属性上使用的扩展方法?

例如,如果我有一个具有导航属性产品的制造商实体,我可以执行以下操作:

// ManufacturersQuery is an IQueryable<Manufacturer>
from m in ManufacturersQuery
let p = m.Products.ReturnableProducts()
where ...
select ...

// Extension method - This throws the error "LINQ to Entities does not recognize the method ReturnableProducts and this method cannot be translated into a store expression."
public static IEnumerable<Product> ReturnableProducts(this IEnumerable<Product> products)
{
    return products.Where(p => p.IsReturnable);
}

我认为如果导航属性m.Products返回IQueryable而不是ICollection,这可能是可能的,但我不知道是否可以更改。

可以这样做吗?谢谢!

0 个答案:

没有答案