如何在Lightswitch中扩展一个只返回树的叶节点的查询?

时间:2011-08-18 17:22:36

标签: visual-studio-lightswitch

在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;  
    }  

1 个答案:

答案 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”,这显然也没有。