1
나는 linq 쿼리 내에서 하위 컬렉션을 얻는 방법을 알아 내려고하고있어. 기본적으로 여러 개의 일정이있는 코스가 있지만 아래 쿼리를 사용하면 일정이 컬렉션이 아니기 때문에 각 코스마다 여러 개의 개체가 반환됩니다.조인과 자식 컬렉션을 반환하는 방법 linq 쿼리
public JsonResult Required(int programId, int departmentId)
{
var courses = (from r in context.ProgramRequiredCourses
join c in context.IAUClasses on r.ClassId equals c.id
join s in context.IAUClassSchedules on c.id equals s.classId
join d in context.IAUDepartments on c.mainDepartmentId equals d.id
where r.ProgramId == programId && d.id == departmentId
select new RequiredCourse{
Department = d,
Course = c,
Schedule = s
}).AsEnumerable().Distinct(new DistinctCourseComparer());
return Json(courses, JsonRequestBehavior.AllowGet);
}
** 지원 코드 **
나는 RequiredCourse 클래스의 일정이 IEnumerable을 변경해야합니다 알고 있지만, 그것을 채우기에 대해 이동하는 방법을 잘. 당신이 그룹에 대해 묻는있는 것 같습니다
public class RequiredCourse
{
public IAUClass Course { get; set; }
public IAUClassSchedule Schedule { get; set; }
public IAUDepartment Department { get; set; }
}
public class DistinctCourseComparer : IEqualityComparer<RequiredCourse>
{
public bool Equals(RequiredCourse x, RequiredCourse y)
{
return x.Course.id == y.Course.id &&
x.Course.className == y.Course.className;
}
public int GetHashCode(RequiredCourse obj)
{
return obj.Course.id.GetHashCode()^
obj.Course.className.GetHashCode();
}
}
쿼리는 여러 개의 고유 한 RequiredCourse를 반환합니다. 그래서 기본적으로 여러 개의 다른 스케줄을 리턴하려고합니다. – Hatjhie
아니요 각각 일정표가있는 여러 개의 별개 과목이 필요합니다. 말이된다? RequiredCourse는 각 코스의 결과를 보관하는 객체 일 뿐이므로 각 코스의 코스 객체, 부서 객체 및 일정 객체 컬렉션이 있어야합니다. –