如何解决LINQ to SQL 多个表在“on”子句中带有条件的左外连接
SELECT u.username,COUNT(r.id)
FROM users u
LEFT JOIN userroles ur ON u.id = ur.userid
LEFT JOIN roles r ON ur.roleid = r.id AND r.name = 'Managers'
GROUP BY u.username
ORDER BY u.username
目标很简单,上面的SQL运行良好,现在我需要弄清楚如何将其转换为LINQ代码。我有左连接工作,我不知道该怎么做的两件事是计数和 r.name = 'Managers'。这是我目前所拥有的,我该如何完成?
var result =
from user in _context.Users
join userRole in _context.UserRoles on user.Id equals userRole.UserId into userUserRoleGroup
from u in userUserRoleGroup.DefaultIfEmpty()
join role in _context.Roles
on u.RoleId equals role.Id into roleUserRoleGroup
from r in roleUserRoleGroup.DefaultIfEmpty()
select new UserRole { Username = user.UserName,RoleName = r.Name };
解决方法
你可以这样计算:
var count = from role in _context.Role
group role by role.UserId into groupedRoles
select new
{
RoleId = groupedRoles.Key,Total = groupedRoles.Count()
}
然后您可以在查询中加入变量“count”。 它将具有属性“Total”,这是您的计数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。