您好,我正在 .net 中开发 Web 应用程序。我遇到过以下情况。
下面是我的第一个表格。
perm_levelid scrn_id perm_id perm_read perm_write
40 1 2 1 1
41 2 2 1 1
42 3 2 1 1
下面是我的第二个表。
scrn_id scrn_name
1 UserProfile
2 Change Password
3 Dashboard
4 Lease request
上面两个表之间的关系是scrn_id
我期望的输出是
scrn_id perm_id perm_read perm_write
1 2 1 1
2 2 1 1
3 2 1 1
4 0 0 0
我想要结果总共 4 行。 scrn_id 1,2,3 在两个表中匹配,因此我应该检索第一个表 perm_read 和 perm_write 值。我也想获得第二张表的剩余值(value)。
我尝试如下。
List<screendetails> obj = new List<screendetails>();
obj = (from c in db.rolsp_perm_levelmapping
join mapdetails in db.rolsp_scrn_screen on c.scrn_id equals mapdetails.scrn_id
into mapObj
from wt in mapObj.DefaultIfEmpty()
where c.perm_id== permisssionID
select new screendetails {
scrn_id=c.scrn_id,
scrn_name= wt.scrn_name,
Read=c.perm_read,
Write=c.perm_write
}).ToList();
return obj;
以上查询未产生正确的结果。我可以在这里得到一些帮助来解决这个问题吗?谢谢
最佳答案
obj= (from scrn in db.rolsp_scrn_screen
from rmap in db.rolsp_perm_levelmapping
.Where(rl=>rl.scrn_id==scrn_id).DefaultIfEmpty() select new screendetails {
scrn_id=scrn.scrn_id,
scrn_name= scrn.scrn_name,
Read=rmap.perm_read,
Write=rmap.perm_write
}).ToList();
尝试使用这个...希望这有帮助...
关于c# - Linq 左连接多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44943839/