2012-01-18 8 views
0

私は2つの表、1つの注文と1つの製品を持っています。 OrderにはOrderID、OrderName、AccessIDがあり、ProductsにはProductID、ProductName、OrderIDがあります。これらのテーブルにはさらに多くのフィールドがありますが、これは私の問題に関連するものです。Linq表1をフィルタリングして表2から数えます。

それでは、私がやりたいことは、私は私が行うことができることを知って8つの未満の製品を持っている、とAccessIDは1

であるため、その受注コードと製品テーブル内の製品の最初のセットを取得し、あります2つのLINQステートメントで最初にAccessIDのOrdersでフィルターをかけて、Productsテーブルにループを作成してCountの最初のインスタンスを取得します。< 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つの順序でのみ許可されます。

(多くの関係が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

関連する問題