2012-01-18 8 views
0

2 개의 테이블, 하나의 주문 및 하나의 제품이 있습니다. 주문에는 OrderID, OrderName 및 AccessID가 있고 Product에는 ProductID, ProductName 및 OrderID가 있습니다. 이 테이블에는 더 많은 필드가 있지만 내 문제와 관련이 있습니다.Linq 표 1을 필터링하여 표 2에서 계산하십시오.

그래서 내가 할 소원 무엇보다 8 개 제품이 위해 자신의 OrderID를 가진 제품 테이블에 제품의 첫 번째 세트를 취득하고, AccessID 내가 할 수 있다는 것을 알고 1.

입니다 그것은 2 LINQ 문에서 첫 번째 AccessID에 의해 순서에 의해 필터, 그리고 제품의 테이블에 계산을 < 8 백작의 첫 번째 인스턴스를 얻을 수 있지만, 나는 아마도이 일을 할 수있는 더 좋은 방법입니다 가능성이 1 문장입니다. 여러분의 도움과 시간에 대한

덕분에

이것은 내가 지금 마련하고 여전히 테스트하는 것입니다 : -

public Order OrdersLessThanEightItems() 
    { 
     IEnumerable<int> orderId = null; 
     int accessID = 1; 

     Order order = (from o in db.Orders 
            where o.AccessID == accessID && o.Products.Count < 8           
            orderby o.Products.Count ascending 
            select o).FirstOrDefault(); 
     return order; 
    } 

답변

1

사전 편집

는해야하지 주문과 상품 간의 관계는 다 대다 관계가 될 수 있습니까?

제품에 주문 ID가 있어야합니까? 그러면 1 개의 제품은 1 개의 순서로만 허용됩니다.

포스트 편집이 (테스트되지 않은)를 사용 할 수 있습니다 그리고

public class Product 
{ 
    //... 
    public Order InOrder { get; set; } 
    //... 
} 

public class Order 
{ 
    //... 
    public virtual ICollection<Product> ProductsInOrder { get; set; } 
    //... 
} 

(관계 한 많은 것을 강조 이후)에,

List<Product> productList = (from o in context.Orders 
          where o.AccessID == myAccessID && o.ProductsInOrder.Count < 8 
          orderby o.ProductsInOrder.Count 
          select o).ToList(); 
+0

안녕 전원을 내 경우, 1 대 1의 관계, 즉 제품은 언제든지 1 단계 만 가능합니다. – Johann

+0

@ Johann 1 대 1의 관계라면 주문에 1 개 이상의 제품이 존재하지 않습니다. – ThePower

+0

오, 죄송합니다. 제품의 주문이 다른 제품과 다를 수 있으므로 주문과 제품간에 1 대 다수가 가능하다는 의미입니다. 나는 여전히 테스트를 받아야 할 무언가를 생각해 내 질문을 편집 할 것입니다. – Johann