2009-06-18 2 views
1

세 개의 테이블, 교수, 교수 학생, 학생.엔티티 프레임 워크 Many-To-Many + Count

나는 모든 교수를 원한다. + 각 교수는 몇 명의 학생을 원한다.

나는이 작업을 수행 할 수 있습니다.

context.ProfessorSet.Include("Student") 

context.ProfessorSet.Include ("학생") ToList()를 세 개의 테이블을 읽습니다.

하지만 나는 학생 표를 얻고 싶지 않습니다. Linq가 "Professor Table"+ "StudentId 교수의 학생 그룹"을 얻고 싶습니다.

가능한가요?

 var c = from tag in contexto.ProfessorSet 
       select new 
       { 
        Tag = tag, 
        Count = tag.Student.Count 
       }; 

을하지만 SQL 생성 :

답변

2

내가 이것을 사용 할

이 로부터 C.Id, C.Nome, C.C1 을 선택합니다 ( 을 선택 .Id, A.Nome, (선택 COUNT (0) FROM Professor Studant A

선택 A.Id (0) 교수 A로부터 이너 ProfessorStudent 참여 횟수 : [C1] I 원하는 교수로서 FROM )

이것과 A.Id = B.ProfessorId ) SB 라인 교수 = 페이지에 A.Id = B.ProfessorId 그룹으로 A.Id

+0

고마워요 @Fujiy 그것은 나를 위해 완벽하게 작동합니다! –

0
from p in context.ProfessorSet 
from s in p.Student 
group s by s.StudentId into g 
select new 
{ 
    Professor = p, 
    StudentCounts = from sc in g 
        select new 
        { 
         StudentId = sc.Key, 
         Count = sc.Group.Count() 
        } 
} 
+0

오류에 B가, 이 sc.Count을 기호 P에게 를 해결 = 셀 수 없다() Count()가 존재하지 않음 –

+0

고정 계수. p가 맞습니다. –