Entity Framework Многие ко многим + Количество - PullRequest
1 голос
/ 18 июня 2009

У меня три стола, профессора, профессор, студент, студент.

Я хочу, чтобы все профессора + Сколько студентов было у каждого профессора.

Я могу сделать это:

context.ProfessorSet.Include("Student")

context.Prof ProfessorSet.Include ("Student"). ToList () будет читать все три таблицы.

Но я не хочу получать студенческий стол, я хочу, чтобы Linq просто получил «Стол профессора» + «Количество (*) ProfessorStudent Group By StudentId».

Это возможно?

Ответы [ 2 ]

2 голосов
/ 19 июня 2009

Я использую это:

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

Но сгенерируйте этот SQL:

ВЫБРАТЬ C.Id, C.Nome, C.C1 ОТ (ВЫБРАТЬ A.Id, A.Nome, (ВЫБРАТЬ COUNT (0) ОТ профессора Студент А.С. Б ГДЕ А. Ид = Б. Профессор ) AS [C1] ОТ профессора А.С.)

Я хочу это:

Выберите A.Id, Count (0) у профессора A внутреннее объединение ProfessorStudent B с A.Id = B.Prof ProfessorId Группа по A.Id

0 голосов
/ 18 июня 2009
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()
                    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...