2011-03-29 10 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가()'라고 코드를 보여주십시오이와 –

답변

3

아마 LINQ는 - 투 - 엔티티 당신이 ProductByModelEqualityComparer에서 작성한 코드를 지원하지 않습니다. 당신은 호출 할 수 있습니다 AsEnumerableDistinct를 호출하기 전에,이 LINQ - 투 - 개체를 통해 실행 Distinct를 만들 것입니다하지만 더 이상 IQueryable하지 않을 것입니다.

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

문제 이 메소드가'IQueryable '을 반환한다는 것입니다. 아마도 그는 반환 된 객체에 대해 쿼리를 수행하고있을 수 있으며 데이터 저장소의 모국어로 번역 될 것으로 예상합니다. 쿼리에서'AsEnumerable()'을하면 더 이상 데이터베이스에 대한 후속 쿼리를 실행하지 않습니다. – Chev

+0

@Chevex, 나도 알아, 나는 다른 말로 동일한 것을 썼다. – Snowbear

+0

아, 더 명확하게하고 싶을지도 모른다. 나는 그것이 IEnumerable로 만들기위한 의도라고 말하고 있다고 생각했습니다. – Chev