Соедините многоуровневые отношения в LINQ to SQL - PullRequest
2 голосов
/ 15 февраля 2011

Есть 3 таблицы: ParentCategories -> Категории -> Статьи.

  • ParentCategory (идентификатор, имя)
  • Категория (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
    ...);

Ответы [ 2 ]

3 голосов
/ 15 февраля 2011

(Если я правильно понимаю вашу схему), вы можете использовать стратегию неявного соединения , такую ​​как:

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

Для неявного соединения требуется, чтобы у вас было установлено Ассоциации между вашими сущностями в конструкторе O / R.

1 голос
/ 16 февраля 2011
articles = from a in db.Articles
          join c in db.Categories
          on myParentCategoryID equals c.ParentCategoryId
select a;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...