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

本文关键字:HashSet 查询 LINQ 我的 | 更新日期: 2023-09-27 18:02:15

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

<>以前从U in db。AspNetUsersorderbyu.UserName选择…之前

很好。但是现在我想过滤特定的用户角色。有一个u.AspNetRoles,它是一个对象的哈希集。每个对象都有一个Name属性,该属性是角色的名称。

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

以前我只是试着用角色数据连接表,但没有工作,因为有一个AspNetUserRoles表,只有一个UserID和一个RoleID没有主键。假设不建议为没有主键的表创建实体类

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

我认为这符合你的要求:

from
    u in db.AspNetUsers
where
    u.AspNetRoles.Any(r => r.Name == "SuperAdmin")
orderby
    u.UserName
select
    . . .

如果集合中的任何项满足标准lambda(在本例中为r => r.Name == "SuperAdmin"),则Any方法将返回true。如果用户对象u的集合AspNetRoles中有一个Name的值为"SuperAdmin",则Any的结果为真。如果所有项都不符合条件,则Any返回false。