如何在我的LINQ查询中使用HashSet?

时间:2016-08-13 22:29:59

标签: c# entity-framework linq hashset

我查询所有看起来像这样的用户:

from
    u in db.AspNetUsers
orderby
    u.UserName
select
    ....

工作正常。但现在我想过滤特定的用户角色。有一个u.AspNetRoles是一个HashSet对象。每个对象都有一个Name属性,该属性是角色的名称。

所以我只想选择拥有Name等于"SuperAdmin"的角色对象的用户。

以前我只是尝试使用角色数据加入表,但是因为有一个只有UserID和没有主键的RoleID的AspNetUserRoles表,所以没有用。并且据推测,不建议为没有主键的表创建实体类。

1 个答案:

答案 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。