我正在尝试创建级联下拉菜单,并且一直在关注本教程here
我的数据库比教程中的数据库更复杂,我需要帮助创建一个lambda表达式
这是我的数据库表
我要创建的级联下拉菜单将允许用户选择 RiskType然后根据选择将显示所选RiskType的关联GroupMembers。
以下是我在控制器中的代码
public ActionResult AddNewRisk()
{
ViewBag.RiskTypeID = new SelectList(_DBContext.RiskTypes, "ID", "Description");
ViewBag.GroupMembers = new SelectList(new List<GroupMember>(), "ID", "Name");
return View();
}
public IList<GroupMember> GetGroupMember(int SelectedRiskTypeID)
{
return _DBContext
.RiskTypeHasGroups
}
public JsonResult GetJsonGroupMember(int ID)
{
var GroupMemberListT = this.GetGroupMember(Convert.ToInt32(ID));
var GroupMemberList = GroupMemberListT.Select(x => new SelectListItem()
{
Text = x.Name,
Value = x.ID.ToString()
});
return Json(GroupMemberList, JsonRequestBehavior.AllowGet);
}
在名为GetGroupMember的方法中遇到问题并且不知道如何编写正确的lambda表达式以便仅回退具有匹配的RiskGroup.ID后跟匹配的RiskType.ID的组成员。如果有人能告诉我正确的方法,我真的很感激。
提前致谢。
答案 0 :(得分:1)
根据我的建议简化模型后,您的查询将变为:
public IQueryable<GroupMember> GetGroupMember(int SelectedRiskTypeID)
{
return _DBContext.GroupMembers
.Where(g=>g.RiskGroups.Any(rg=>rg.ID=SelectedRiskTypeID));
}
如果您决定保留ID,那么这将是您的查询:
public IQueryable<GroupMember> GetGroupMember(int SelectedRiskTypeID)
{
return _DBContext.GroupMembers
.Where(gm=>gm.RiskGroupHasGroupTypes
.Any(rghgt=>rghgt.RiskGroup.ID==SelectedRiskGroupTypeID))
}