2012-03-01 25 views
0

私は3つのテーブルを持っていますStudent、Course、およびLinking Table StudentCourse、学生ID = 1のすべてのコースを返しますが、学生IDが1でないかもしれない行も含みますid 1の学生と同じコースを取っていますか?EFの多対多関係linqクエリ

student  courses  studentcourse 
     1   8   1 - 8 
     2   9   2 - 8 
     3   10   3 - 9 

ので、トリッキーな部分は、私はもちろん8または最終結果がでなければなりませんID 1

の学生によって取られ、他のコースの他の行を含めることです:stuctureはこのようなものです2行:where句でstudent id = 1(id 8のコース)のコースに興味があると指定しますが、そのコースの他の行も含めたいと考えています。だから、結果は次のとおりです。これはEFと、あなたのStudentエンティティとあなたが次のことを行うことができるようになるあなたのCourseエンティティのStudentsナビゲーションにCoursesナビゲーションプロパティを持つ必要があり、あなたの最新の明確化であることを考えると

1 - 8 
2 - 8 

答えて

1

var students = db.Students 
        .Single(x=> x.Id == 1) 
        .Courses.SelectMany(c=> c.Students) 
        .Distinct(); 
+0

こんにちは、私は、彼らはまた、あなたが他のすべての行をしたいコース8 – user282807

+0

を取っているので、これは最終的な結果にコース8 のID 2のはずもincluse学生のすべてのレコードを返す含まれていないだろうと思い**だけ**についてコース8?もしそうなら、それは不可能です。あなたの質問を更新してください。私には、学生IDが与えられたコースがほしいと思っています。可能であれば、より良い例を提供してください。 – BrokenGlass

+0

こんにちは、私は最終結果に学生ID1以外の行を含めなければならないと指定しました。それは既に正常な結果が得られているためですが、Id = 1でwhere句を実行しているので、なぜ私は他の行を含めて苦労しているのですか?シナリオでは、コース番号を取得するためにid = 1のすべてのレコードを取得してから、他の誰が同じコースを受講しているかを知る必要があります。しかし、2つのクエリでそれをやりたいとは思わない。これは可能ですか? SQLステートメントも役に立ちます。 – user282807