C# 如何获取MVC5 web应用程序中所有管理员的列表?

C# 如何获取MVC5 web应用程序中所有管理员的列表?,c#,asp.net,entity-framework,asp.net-mvc-5.1,C#,Asp.net,Entity Framework,Asp.net Mvc 5.1,我想使用EntityFramework运行查询 Get(u => u.Roles.Contains("Administrator")); 其中,“获取”操作与教程中的操作相同: 我想这样使用它,因为我需要它通过DbContext,因为它离控制器只有一行,我想保持请求的一致性 因此,我的问题是如何做到这一点,以及让所有用户都扮演特定角色的最佳方式是什么 编辑: 以下是我最终使用的代码: var roleManager = new RoleManager<Ide

我想使用EntityFramework运行查询

   Get(u => u.Roles.Contains("Administrator"));
其中,“获取”操作与教程中的操作相同:

我想这样使用它,因为我需要它通过DbContext,因为它离控制器只有一行,我想保持请求的一致性

因此,我的问题是如何做到这一点,以及让所有用户都扮演特定角色的最佳方式是什么

编辑:

以下是我最终使用的代码:

        var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()));
        string roleId = roleManager.FindByName("Administrator").Id;

        return Get(x => x.Roles.Select(y => y.RoleId).Contains(roleId));
var rolemager=new rolemager(new RoleStore(new ApplicationDbContext());
字符串roleId=rolemager.FindByName(“管理员”).Id;
返回Get(x=>x.Roles.Select(y=>y.RoleId.Contains(RoleId));

U.Roles.Name==“Administrator”
或类似的东西试试看?

您没有使用
.Contains()
它的使用方法。看看文件:

Doc说它“确定序列是否包含指定的元素。”是否表示T/F。它不会抓取包含指定角色的用户。您需要使用
.Where()
扩展名。它可能看起来像这样:

var users = userRepo.Where(u => u.Roles.Contains(r => r.Name == "Administrator"));

因此,现在,您得到的用户的任何角色都包含一个名为“管理员”的角色,另一个答案很接近,但您需要首先查找
管理员角色的
角色ID
(因为不幸的是
IdentityUserRole
没有
名称
属性。)一旦你做到了,这就相对简单了

在下面的示例中,我嵌套了另一个查询,以提取
角色集合
中至少有一个
IdentityUserRole
具有特定
RoleId

// Add code to look up the appropriate RoleId below.
var roleId = 1; 

Get(u => u.Roles.Any(r => r.RoleId == roleId));

如果您不确定如何执行查找,请参阅相关SO问题上的

以便运行!!如果你通读了你的问题,你应该注意到里面实际上没有问题!!这是我想做的事情。我不能真正运行它,因为Contains不接受字符串。它接受一个角色对象。你是对的,没有实际问题,但我的问题是,你如何做到这一点,以及让所有用户都扮演特定角色的最佳方式是什么。提出的任何答案是否充分回答了你的问题?如果没有,您还可以提供更多信息吗?我已选择您的答案作为正确答案,并进行了投票。:)角色的类型为ICollection,因此它不包含Name属性:/那么,为了获得角色ID,最好的设计是什么呢?我正在使用UnitsOfWork设计方法,在用户的存储库中,我正在尝试获得管理员用户?(基本上,我发布的代码在用户的存储库中,我希望有一个方法可以为我提供所有管理员。)我是否应该初始化一个新对象以在那里找到RoleId?还是有更快的办法?另外,我正在使用ASP标识。我现在没有打开Visual Studio,因此无法验证这一点,但请尝试以下操作:
var administrators=RoleManager.Roles.Single(r=>r.Name==“administrators”).Users.ToList()