如何将第三个 table 带到 JsonResult 以及如何将其写入我的控制器详细信息?

how to bring a 3rd table to a JsonResult and how to write it in my controller Details?

我的第二个加入我的错误,我不知道我还能怎么写

[HttpGet] public JsonResult GetBadgesStudentList(int CohortProgramEnrollmentID) { db.Configuration.ProxyCreationEnabled = 假;

    var badgesList =
        from bad in db.BadgeAssignments
        join coh in db.CohortProgramEnrollment on bad.CohortProgramEnrollmentID equals coh.CohortSubscriptionId
        join des in db.Badges on bad.BadgeID equals des.Description
        where bad.BadgeID == CohortProgramEnrollmentID
        select new { Badges = des };

    return Json(badgesList.ToList().Select(x => new { 
         x.Badges.CohortProgramEnrollmentID, x.Badges.Description }),
                JsonRequestBehavior.AllowGet);
}
// GET: CohortSubscriptions/Details/5 
[Authorize(Roles = "Administrator, Coach")] 
public ActionResult Details(int? id)
{ 
if (id == null) { 
return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } CohortSubscriptions cohortSubscriptions = db.CohortSubscriptions.Find(id); 
if (cohortSubscriptions == null)
{
 return HttpNotFound(); 
}
 return View(cohortSubscriptions); 
}

我想获取 table 徽章中与特定学生相关的徽章(通过 CohortSubscriptionsId)。 要到达那里,我需要 3 tables: 在 table 徽章中,我有我的徽章 ID,它给出了他的描述, 在 BadgeAssigments table 我的 BadgeID 与 CohortProgramEnrollmentID 和 在 CohortProgramEnrollments table 中,我有最终与学生相关联的 ID:CohortSubscriptionId

我认为连接顺序是正确的,但等式子句有点令人困惑,我认为这一行比较了两个不同的键:

bad.BadgeID equals des.Description 

所以我猜正确的连接应该是你比较键和 ID 时的样子。

 var badgesList =
            from bad in db.BadgeAssignments
            join coh in db.CohortProgramEnrollment on bad.CohortProgramEnrollmentID equals coh.ID
            join des in db.Badges on bad.BadgeID equals des.ID
            where bad.BadgeID == CohortProgramEnrollmentID
            select new { Badges = des };

        return Json(badgesList.ToList().Select(x => new { 
             x.Badges.CohortProgramEnrollmentID, x.Badges.Description }),
                    JsonRequestBehavior.AllowGet);
    }