【问题标题】:Entity Framework Many-To-Many + Count实体框架多对多+计数
【发布时间】:2009-06-18 13:13:23
【问题描述】:

我有三张桌子,Professors、ProfessorStudent、Student。

我想要所有教授 + 每个教授有多少学生。

我可以这样做:

context.ProfessorSet.Include("Student")

context.ProfessorSet.Include("Student").ToList() 将读取所有三个表。

但我不想获取学生表,我希望 Linq 只获取“教授表”+“Count(*)ProfessorStudent Group By StudentId”。

有可能吗?

【问题讨论】:

    标签: c# linq entity-framework linq-to-entities


    【解决方案1】:

    我确实使用这个:

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

    但是生成这个 SQL:

    选择 C.ID, C.诺姆, C.C1 从 (选择 援助, A.诺姆, (选择 计数(0) FROM 教授学生 AS B 其中 A.Id = B.ProfessorId ) 作为 [C1] 来自教授 AS A)

    我想要这个:

    从教授 A 中选择 A.Id, Count(0) 在 A.Id = B.ProfessorId 上内部加入 ProfessorStudent B 按 A.Id 分组

    【讨论】:

      【解决方案2】:
      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()
                          }
      }
      

      【讨论】:

      • Professor = p 行出错,无法解析符号 p 并且 Count = sc.Count() Count() 不存在
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-28
      • 1970-01-01
      • 1970-01-01
      • 2011-06-11
      • 2014-08-04
      相关资源
      最近更新 更多