2011-09-14 20 views
0

私は多くのテーブルから多くのテーブルにデータを取得するためにlinqを書こうとしています。多対多の関係

ここではテーブルである

製品(ID、名前、説明)

Products_Items(ID、商品コード、説明)

ProductsNeeds(ID、名前)

ProductsItems_Needs(アイテムID、 NeedsID)

これはt-sqlクエリです

このは、LINQ

var q = from p in objM.Products 
     join gpItems in objM.Products_Items on p.ID equals gpItems.ProductID 
     from needs in gpItems.ProductsNeeds 
     where gpItems.ID == 1 
     select p; 

このクエリが返す(製品)であり、それはProduts_Itemsを持っていますが、それはProductsNeedsを持っていません。

各製品に商品に必要な変更は何ですか?

ありがとう

答えて

0

最後に解決策が見つかりました。

Productを返す代わりにProduct_Itemsを返すという変更がありました。

var q = from pItems in objM.Products_Items 
join p in objM.Products on pItems.ID equals p.ID into joinedProducts 
    from p in joinedProducts.DefaultIfEmpty() 
from needs in pItems.ProductsNeeds 
where pItems.ID == 1 
select pItems;