我有三张表格,教授,教授,学生,学生。实体框架多对多+数量
我想要所有的教授+每位教授有多少名学生。
我可以做到这一点。
context.ProfessorSet.Include("Student")
context.ProfessorSet.Include( “学生”)ToList()将读取所有三个表。
但我不想得到学生表,我希望Linq只是得到“教授表”+“计数(*)教授学生组由StudentId”。
它有可能吗?
我有三张表格,教授,教授,学生,学生。实体框架多对多+数量
我想要所有的教授+每位教授有多少名学生。
我可以做到这一点。
context.ProfessorSet.Include("Student")
context.ProfessorSet.Include( “学生”)ToList()将读取所有三个表。
但我不想得到学生表,我希望Linq只是得到“教授表”+“计数(*)教授学生组由StudentId”。
它有可能吗?
我使用这个:
var c = from tag in contexto.ProfessorSet
select new
{
Tag = tag,
Count = tag.Student.Count
};
但生成该SQL:
选择 C.Id, C.Nome, C.C1 FROM (SELECT 一.Id, A.Nome, (SELECT COUNT(0) FROM ProfessorStudant A SB WHERE A.Id = B.ProfessorId )AS [C1] FROM的教授)
我想这样的:
选择A.Id,COUNT(0)从A教授 内部联接ProfessorStudent B关于上线 教授= p A.Id = B.ProfessorId 集团通过A.Id
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()
}
}
错误, 无法解析符号p 和COUNT = sc.Count() Count()不存在 – 2009-06-19 12:49:05
固定计数。 p是正确的。 – 2009-06-19 13:24:27
谢谢@Fujiy它对我来说非常完美! – 2016-05-17 14:23:08