我有以下型号:
public class Course
{
public int Id { get; set; }
public string Name { get; set; }
}
public class Course_TutionCenter
{
public int Id { get; set; }
public int CourseId { get; set; }
public int TutionCenterId { get; set; }
[ForeignKey("CourseId")]
public virtual Course Course { get; set; }
[ForeignKey("TutionCenterId")]
public virtual TutionCenter TutionCenter { get; set; }
}
public class CourseStudent
{
public int Id { get; set; }
public int Course_TutionCenter_Id { get; set; }
[ForeignKey("Course_TutionCenter_Id")]
public virtual Course_TutionCenter Course_TutionCenter { get; set; }
}
每门课程都在很多Course_TutionCenter中讲授,每门课程都有很多CourseStudent,分布在几个Course_TutionCenter上。
我在单个LINQ查询中需要以下数据:
CourseId,课程名称,提供此课程的Tution中心数量,在所有Tution中心学习此课程的学生人数
我无法使用单个LINQ查询获取此数据,因为在(课程和Course_TutionCenter)的联接中通过课程应用组时,获取所有Tution中心的学生总数的信息将丢失,因为我们在通过课程申请分组后没有多个Tution中心的ID。在课程和Course_TutionCenter的加入中
可以使用单个LINQ查询来完成吗?
答案 0 :(得分:2)
我认为以下内容可以满足您的需求:
$(document).ready(function() {
$('.valueInput').each(function() {
$(this).text('hi!');
});
});
答案 1 :(得分:2)
我会以最自然的方式编写LINQ查询来描述预期结果,并让ORM为我处理SQL生成(使用连接或任何需要的连接)。
在您的情况下,IMO不需要GroupBy
,从Course
表开始(已包含分组信息),只需使用导航属性从其他表中获取所需的聚合进行过滤:
var query = db.Course.Select(c => new
{
CourseId = c.Id,
CourseName = c.Name,
NumberOfTutionCenters = db.Course_TutionCenter
.Count(tc => tc.CourseId == c.Id),
NumberOfStudents = db.CourseStudent
.Count(s => s.Course_TutionCenter.CourseId == c.Id),
});