gpt4 book ai didi

c# - 在 LINQ 查询中应用 group by,进一步连接所需的信息丢失

转载 作者:可可西里 更新时间:2023-11-01 08:03:33 26 4
gpt4 key购买 nike

我有以下模型:

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; }
}

每门类(class)在多个 Course_TutionCenter 中教授,每个类(class)可以有多个 CourseStudent,分布在多个 Course_TutionCenter 中。

我需要在单个 LINQ 查询中获取以下数据:

CourseId、类(class)名称、开设该类(class)的补习中心数量、所有补习中心选修该类(class)的学生人数

我无法使用单个 LINQ 查询获取此数据,因为在(类(class)和类(class)_TutionCenter)的连接中按类(class)分组应用时,获取所有补习中心的学生总数的信息丢失了,因为我们在Course和Course_TutionCenter的join中group by over Course.Id后没有几个补习中心的ID

这可以使用单个 LINQ 查询来完成吗?

最佳答案

我认为像下面这样的东西可以满足您的需求:

var result = from course in DbCourses
left join courseTutionCenter in DbCourseTutionCenter
on course.Id equals courseTutionCenter.CourseId
left join courseStudent in DbCourseStudent
on courseStudent.Course_TutionCenter_Id equals courseTutionCenter.TutionCenterId
group by new { course.Id, course.Name } into gr
select new
{
CourseId = gr.Key.Id,
CourseName = gr.Key.Name,
TutionCenters = gr.GroupBy(x=>x.courseStudent.Course_TutionCenter_Id).Count(),
Students = gr.GroupBy(x=>x.courseStudent.Id).Count()
};

关于c# - 在 LINQ 查询中应用 group by,进一步连接所需的信息丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41407726/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com