0

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

1 回答 1

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”,这也有效,而您显然没有。

于 2011-11-22T12:16:13.823 回答