在Microsoft Lightswitch中,我有一个这样的自引用表:
Courses {CourseID int, ParentID int, CourseName string}
在LightSwitch屏幕中,我有一个下拉框,应该只显示叶子课程。
我创建了一个LeafCourses查询,我正在尝试扩展它,因此它只返回叶节点,类似于SQL语句:
SELECT * FROM Courses WHERE CourseId NOT IN
(
SELECT ParentID FROM Courses WHERE ParentID is NOT NULL
)
这就是我所拥有的(不工作):
partial void LeafCourses_PreprocessQuery(string Parameter, ref IQueryable<Cours> query)
{
query = from Cours c1 in query
where
!(from Cours c2 in this.Courses
select c2.Cours1.CourseId
).Contains(c1.CourseId)
select c1;
}
答案 0 :(得分:0)
您的帖子很久以前就已经有了解决方案,但仍然是:
据我了解您的数据模型,内部选择就足够了:
SELECT * FROM courses WHERE parentid IS NOT NULL
它为您提供了所有具有父行的行(这将是您的叶节点)。
在LightSwitch PreprocessQuery()中使用LINQ,如下所示:
query = query.Where<Cours>(c => c.ParentId != null);
或不使用lambda:
query = from c in query where c.ParentId != null select c;
即使您没有“.ChildCourses”,这显然也没有。