2011-03-29 151 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

相關問題