2016-08-18 2 views
0

많은 데이터를 가져 오는 LINQ 쿼리가 있습니다 (아래 그림 참조). 이 쿼리는 시간 초과 문제를 일으키므로 필터를 사용하여 필요한 레코드 만 가져옵니다. 특정 날짜에 주문을 받으려고합니다. 날짜 필드는 Order 테이블에 있지만 어떻게 아래 LINQ 쿼리에 포함시켜야합니까? 나는 추가를 시도했다. 어디에서 (...) 두 번째 이후. 포함하지만 그건 오류가 발생합니다.LINQ의 탐색 속성 필터링

var productEntities = _context.Set<Product>() 
      .Include(p => p.OrderItems) 
      .Include(p => p.OrderItems.Select(oi => oi.Order)) 
      .Include(p => p.OrderItems.Select(oi => oi.Order.Client))     
      .ToList(); 
+0

당신이 가진 코드를 제공 할 수있다' . 어디에서 (..)'전화? 오류를 지정할 수 있습니까? 함께 일하기 위해서는 좀 더 많은 정보가 필요합니다. – Raxr

+1

특정 날짜 *에 대한 * 주문을 얻으려고하면'_context.Orders'를 쿼리하지 않으시겠습니까? –

답변

0

내가 주문하면 실제로는 SQL뿐만 아니라 데이터베이스에 조인 좁혀 주먹으로 당신이가는 경우 Ivan Stoev이 바로 믿습니다. 나는 날짜 첫 번째 시도 필터링 주문 말을 한 후 제품을 검색 할 수 SelectMany를 사용하여, 나는 정확히 테이블 관계를 무엇 모르지만 생각은 같은 것입니다 것입니다 :

var productEntities = _context.Set<Order>() 
     .Where(o=>o.Date>=_dateFrom &&o.Date<=_dateTo) 
     .SelectMany(o=>o.OrderItem.Product)  
     .Include(p => p.OrderItems) 
     .Include(p => p.OrderItems.Select(oi => oi.Order)) 
     .Include(p => p.OrderItems.Select(oi => oi.Order.Client))     
     .ToList();