我有一个带有 Id、CategoryName 和 ParentId 的自引用表。这是类别层次结构表的典型场景,这些类别本身可以划分为数据库专家告诉我的类别,称为邻接模型。
我想要的是使用 Linq to SQL 来查询本身与其他子类别无关的子类别,即它们是某个给定类别或子类别的直接叶节点。
我得到了最简单的部分,它只是获取子类别。差点不好意思把代码放在这里。但我们确实喜欢看代码..
IList<Categories> subcategories = context.Where( c => c.ParentId == 1).ToList();
但是将其缩小到没有子类别的类别让我大吃一惊。任何帮助将非常感激。
谢谢你的帮助。杰夫
更新**这似乎可行,但如果有人能确认它是“正确的”,我将不胜感激。因此,如果我想要 Id = 1 的类别下的叶节点,我会这样做:
Categories.Where( c => !c.Children.Any ( d => d.ParentId == c.Id)).Where( e => e.ParentId == 1)
“孩子”是 Linq 给自引用关联的名称。