2011-02-15 8 views
2

ParentCategories - > Categories - > Articlesの3つのテーブルがあります。LINQ to SQLのマルチレベル関係に参加

  • ParentCategory(ID、名前)
  • カテゴリー私が持つすべての記事を選択するにはどうすればよい(ID、parentCategoryID、名前)
  • 条(ID、caregoryID、名前)

parentCategoryIDを指定テーブルの記事はcategoreIDへの参照のみ、ParentCategoryIDへのLINQ to SQLを使用していますか?このような

何か:

articles = (
    from a in db.Articles 
    join c in db.Categories 
    on ???????????? 
    join pc in db.ParentCategories 
    on c.ParentCategoryId equals pc.ID 
    ...); 
+0

独自のソリューションをご希望の場合は、(アップデートではなく)回答として投稿し、同意する必要があります。 – shaunmartin

+0

ありがとうございます。 – Alexandre

答えて

1
articles = from a in db.Articles 
      join c in db.Categories 
      on myParentCategoryID equals c.ParentCategoryId 
select a; 
3

(私が正しくあなたのスキーマを理解していれば)あなたは暗黙のような戦略に参加使用することができます:暗黙的に参加

var articles = db.Categories 
    .Where(c => c.ParentCategoryID == yourParentCategoryID) 
    .SelectMany(c => c.Articles) 
    .ToList(); 

あなたはAssociationsセットを持っていることが必要ですがあなたのO/Rデザイナーのあなたのエンティティの間のアップアップ。

+0

いいえ。変数 "c"(type - Category)には "Articles"の定義が含まれていません。 – Alexandre

+0

そのため、O/Rデザイナでエンティティ間の関連付けを設定する必要があると述べました。 'Category'と' Article'の間に関連付けを行うと、それは 'Category'に' Articles'(またはあなたが選んだ名前)プロパティを作成します。 – shaunmartin