在LINQ to SQL中加入多级关系

时间:2011-02-15 20:12:57

标签: c# .net linq linq-to-sql

有3个表:ParentCategories - >分类 - >制品

  • ParentCategory(ID,Name)
  • 类别(ID,parentCategoryID,名称)
  • 文章(ID,caregoryID,姓名)

如何使用LINQ to SQL选择指定parentCategoryID的所有文章(表格文章仅引用categoreID,而不是ParentCategoryID)?

这样的事情:

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

2 个答案:

答案 0 :(得分:3)

(如果我理解您的架构正确),您可以使用隐式联接策略,例如:

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

隐式联接要求您在O / R设计器中的实体之间设置Associations

答案 1 :(得分:1)

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