我查询所有看起来像这样的用户:
from u in db.AspNetUsers orderby u.UserName select ....
工作正常。但现在我想过滤特定的用户角色。有一个u.AspNetRoles
是一个HashSet对象。每个对象都有一个Name
属性,该属性是角色的名称。
所以我只想选择拥有Name
等于"SuperAdmin"
的角色对象的用户。
以前我只是尝试使用角色数据加入表,但是因为有一个只有UserID和没有主键的RoleID的AspNetUserRoles表,所以没有用。并且据推测,不建议为没有主键的表创建实体类。
答案 0 :(得分:2)
我认为这符合你的要求:
from
u in db.AspNetUsers
where
u.AspNetRoles.Any(r => r.Name == "SuperAdmin")
orderby
u.UserName
select
. . .
如果集合中的任何项符合标准lambda(在这种情况下为Any
),则r => r.Name == "SuperAdmin"
方法将返回true。如果用户对象AspNetRoles
的集合u
中的任何项目的Name
值为"SuperAdmin"
,则Any
的结果为true。如果所有项都不符合标准,则Any
将返回false。