2011-03-29 100 views
2
public IQueryable<Product> GetModelsInBrand(int BrandId) 
{ 
    IQueryable<Product> query = 
     from Product 
      in ObjectContext.Products.Where(p => (p.BrandId == BrandId)) 
     orderby Product.Model 
     select Product; 
     query = query.Distinct(new ProductByModelEqualityComparer()); 
     return query; 
} 

返回查询被执行死刑后,我得到了LINQ到实体无法识别方法

加载操作失败查询“GetModelsInBrand”。 LINQ到实体无法识别方法。”

谁能帮助纠正它吗?

+0

请出示其中'GetModelsInBrand()'就是所谓的代码 – 2011-03-29 20:42:16

回答

3

也许LINQ到实体不支持,你写了一首歌ProductByModelEqualityComparer的代码,你可以调用AsEnumerable调用Distinct之前,这将使Distinct通过LINQ到对象执行,但它不会是IQueryable了:

var enumerable = query.AsEnumerable().Distinct(new ProductByModelEqualityComparer()); return query; } 
+0

问题与此该方法返回'IQueryable '。据推测,他可能会对返回的对象执行查询,并期望将它们翻译成数据存储的本地语言。如果在查询中执行了'AsEnumerable()',则不再对数据库执行后续查询。 – Chev 2011-03-29 21:26:59

+0

@Chevex,我知道,我用不同的词写了相同的文字 – Snowbear 2011-03-29 21:28:48

+0

啊,可能要更清楚一点。我以为你是在说这是为了让它IEnumerable。 – Chev 2011-03-29 21:30:21