【问题标题】:Get Users where are not in role admin and simpleuser获取不在角色 admin 和 simpleuser 中的用户
【发布时间】:2018-11-22 17:32:45
【问题描述】:

我正在使用 .Net Core 2.1,我想排除具有“Admin”和“SimpleUser”角色的用户,我遵循了这个示例Link

如何添加 where 部分? 到目前为止,我已经尝试过这个没有运气:

 ViewData["ApplicationUserId"] = new SelectList( _context.Users.Include(u=>u.UserRoles).ThenInclude(u=>u.Role).Where(o=>o.UserRoles!="Admin"), "Id", "Company", products.ApplicationUserId);

ApplicationUserRole 类:

 public class ApplicationUserRole : IdentityUserRole<string>
    {
        public virtual ApplicationUser User { get; set; }
        public virtual ApplicationRole Role { get; set; }
    }

【问题讨论】:

  • 如果您在我的问题上看到图片,则错误从我的位置的第一部分开始
  • UserRoles 的类型是什么?是实体吗?一个字符串?
  • public ICollection UserRoles { get;放; }
  • 由于UserRolesICollection&lt;ApplicationUserRole&gt; 类型,你可能需要.Where(o =&gt; !o.UserRoles.Any(r =&gt; r.Role == "Admin")) 之类的东西

标签: c# linq asp.net-core-2.0 roles


【解决方案1】:

附加图片中的消息表明u.UserRoles 不是字符串,请在Where 中尝试u.UserRoles.All(r=&gt;r.RoleId!="Admin" &amp;&amp; r.RoleId!="SimpleUser") 之类的内容

【讨论】:

  • 您的解决方案正在运行,但使用此 . r.Role.Name != "管理员"
【解决方案2】:

您需要检查所有角色都不是“Admin”或“SimpleUser”

ViewData["ApplicationUserId"] = new SelectList( _context.Users.Include(u=>u.UserRoles).ThenInclude(u=>u.Role).Where(o => !o.UserRoles.Any(r => (r.Role == "Admin") || (r.Role == "SimpleUser"))), "Id", "Company", products.ApplicationUserId);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-05
    • 2015-08-24
    • 2013-02-18
    • 1970-01-01
    • 1970-01-01
    • 2017-12-07
    • 2013-05-21
    • 2014-05-02
    相关资源
    最近更新 更多