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);

またはラムダを使用しない:

query = from c in query where c.ParentId != null select c;

これは、「.ChildCourses」がなくても機能しますが、明らかにそうではありません。

于 2011-11-22T12:16:13.823 に答える