【问题标题】:How to use a HashSet in my LINQ query?如何在我的 LINQ 查询中使用 HashSet?
【发布时间】:2016-08-13 22:29:58
【问题描述】:

我有一个针对所有用户的查询,如下所示:

从 你在 db.AspNetUsers 订购 u.用户名 选择 ....

效果很好。但现在我想过滤特定的用户角色。有一个 u.AspNetRoles 是一个对象的 HashSet。每个对象都有一个Name 属性,即角色的名称。

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

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

【问题讨论】:

  • 明确一点:您只想查找角色“SuperAdmin”的用户,对吧?
  • 是的,没错。

标签: c# entity-framework linq hashset


【解决方案1】:

我认为这可以满足您的要求:

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。

【讨论】:

    猜你喜欢
    • 2011-12-27
    • 1970-01-01
    • 2013-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多