[英]many to many Entity Framework GetUsersInRole()
I have two Entity types: Role and User that have many to many relation. 我有两个实体类型:角色和用户,有很多关系。 That is Role has the Users property, and User has the Roles property.
即Role具有Users属性,User具有Roles属性。 I must get the string array with usernames that belong to defined role.
我必须使用属于已定义角色的用户名来获取字符串数组。 I wrote some code, but it is not elegant.
我写了一些代码,但它并不优雅。 I want do that with one linq expression.
我想用一个linq表达式做到这一点。 Is it possible?
可能吗?
public override string[] GetUsersInRole(string roleName)
{
List<string> names = new List<string>();
using (MembershipDb db = new MembershipDb())
{
Role role = db.Roles.FirstOrDefault(r => r.Name == roleName);
foreach (User u in role.Users)
{
names.Add(u.UserName);
}
}
return names.ToArray();
}
Look at this: 看这个:
public override string[] GetUsersInRole(string roleName)
{
using (MembershipDb db = new MembershipDb())
{
return db.Roles
.Where(r => r.Name == roleName)
.SelectMany(r => r.Users, (r, s) => s.User.UserName).ToArray();
}
}
return db.Roles.Where(r => r.Name == roleName)
.SelectMany(r => r.Users)
.Select(u => u.UserName)
.ToArray();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.