質問

3つのテーブル(学生、コース、および3番目のStudentCourses割り当てテーブル)を含む古典的な多対多のシナリオがあります。

新しいプロジェクトでEFを使用していますが、EFデザイナーは3番目のテーブルを作成しません。 すべてのコースとそれに割り当てられた生徒数を選択する必要があります。 プレーンSQLの使用は非常に簡単です:

select c.Id, c.Name, Count(sc.*) as StudentCount 
from Courses c left join StudentCourses sc on(c.Id=sc.CourseId)
group by c.Id, c.Name

しかし、このクエリをLinq to SQLに変換する方法がわかりません。 アドバイスしてください。

ありがとう。

役に立ちましたか?

解決

EFデザイナーはテーブルを非表示にします。まだそこにありますが、アソシエーションを作成するだけなので、コースから学生を参照することも、その逆も可能です。

他のヒント

次のようなことができます:

var list = from c in context.Courses
           from s in c.Students
           select new
           {
             StudentName=s.Name,
             Class=s.Class,
           };

詳細については、このページ

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top