大佬们好,小弟初学.NET,需要用到Linq内联
显示管理员列表时,通过RoleId显示对应的分组名称
现在问题是当RoleId在分组表中找不到时,管理员也不显示了
麻烦大佬们帮小弟看看是哪里的问题,折腾一天了,先谢谢了
Linq语句如下:
var dt = (from a in db.evset_admin
join r in db.evset_role on a.roleId equals r.id into ar
from r in ar.DefaultIfEmpty()
select new
{
id = a.id,
adminName = a.adminName,
roleName = r != null ?r.ts_name : "--",
explain = a.Explain
});
evset_admin //管理员表
数据1:sysadmin RoleId:0
数据2:admin RoleId:2
evset_role //分组表
数据1:系统管理员 ID:2
本来就是这样,Inner Join就是两边有数据才连接
你需要的是 Left Outer Join
路过的大佬们帮顶下,谢谢了
建议你先看看 left join inner join right join 的区别。然后你的sql就知道怎么写了。 inner join是a,b表都有数据才链接显示。 left join 是a表有数据,b表没数据,那么显示的就是a表的数据,b表的字段数据就为null。 right join 是 a表没有数据,b表有数据,那么以b表为主显示,a表字段为null