我搜索了我的问题的答案,因为我是一个初学者,我无法得到所有这些,所以问我自己, 我有两个表 SUBMENU 和 AUTHORIZATION 我试着加入但不清楚是左侧还是右侧还是其他方式,因为我是linq的新手。
这是我到目前为止所做的,
var _lststage =
from sm in db.SUB_MENUs
join a in db.AUTHORISATIONs
on sm.SUB_MENU_ID equals a.SUB_MENU_ID into joined_autho
from jA in joined_autho.DefaultIfEmpty()
where sm.MENU_ID.Equals(ViewState["MenuId"]) &&
jA.Roleid Equals ddlroleid.Selectedvalue
select new
{
sm.SUB_MENU_ID,
sm.SUB_MENU_NAME,
jA.checkbox,
};
我希望根据视图状态中的menuid从子菜单表中获取所有子菜单,并且, 我需要根据角色ID和子菜单获取授权表中复选框的值,如果授权表中没有该角色id的值,则应返回默认值。
希望我能很好地解释我的情景, 重复问题的可能性...... 对不起,如果。
答案 0 :(得分:0)
您的查询甚至无法编译。在 where 条件中,第二个Equals
应为方法调用:
// instead of: jA.Roleid Equals ddlroleid.Selectedvalue
jA.Roleid.Equals(ddlroleid.Selectedvalue)
此外,您在选择语句的最后一行还有不必要的逗号:
// instead of: jA.checkbox,
jA.checkbox
完整查询应如下所示:
from sm in db.SUB_MENUs
join a in db.AUTHORISATIONs
on sm.SUB_MENU_ID equals a.SUB_MENU_ID into joined_autho
from jA in joined_autho.DefaultIfEmpty()
where sm.MENU_ID.Equals(ViewState["MenuId"]) &&
jA.Roleid.Equals(ddlroleid.Selectedvalue)
select new
{
sm.SUB_MENU_ID,
sm.SUB_MENU_NAME,
jA.checkbox
};
我相信您已正确标记了您的问题,这是Linq to SQL查询。