我有3张桌子
用户 - UserID,名字,姓氏等
角色 - RoleId,RoleName
功能 - UserId,RoleId
我想使用LINQ
显示具有共同功能的用户请帮忙
答案 0 :(得分:1)
你可以尝试查找:
//Associate the role names with the features
var featureRoles = dbContext.Roles.Join(dbContext.Features,
role => role.RoleId,
feature => feature.RoleId,
(role, feature) => new {
RoleId = feature.RoleId,
UserId = feature.UserId,
RoleName = role.RoleName
});
//Create ILookup
var lookup = dbContext.Users.Join(featureRoles,
user => user.UserID,
fr => fr.UserId,
(user, fr) => new {
User = user,
RoleName = fr.RoleName,
RoleId = fr.RoleId
})
.ToLookup(r => r.RoleName, s => s.User);
这将按用户的角色名称对用户进行排序,例如:
var users = lookup["role 1"];
foreach(var user in users)
{
Console.WriteLine("Users in Role 1:");
Console.WriteLine("\t{0} {1}", user.Firstname, user.Lastname);
}
Output:
"Users in Role 1:"
"John Smith"
"Foo Bar"
...
如果您想要使用角色ID而不是名称进行搜索,则需要将查找定义更改为.ToLookup(r=> r.RoleId, s=> s.User)
答案 1 :(得分:0)
from u in Users
join f in Features on u.UserId equals f.UserId
join r in Roles on r.RoleId equals f.RoleId
where f.RoleId == 1
select new { u.FirstName,u.LastName,r.RoleName}