猿问

LINQ/Lambda 选择具有与任何动态数组元素匹配的任何集合项的记录

使用 MVC 5 和 C#。前端允许按名称选择多个角色并将它们作为 CSV 字符串发送到控制器。然后,控制器按用户的角色属性过滤用户。


前端通过Role.Name属性引用角色,尽管保存在用户配置文件中的角色由引用Role.Id。


例如前端提交, "Customer,Employee,Administrator"


在控制器中,我只需要选择具有这些角色的用户。


// Get users

var filteredRecords = UserManager.Users.AsQueryable();


// Get requested roles (HTTP POST)

string[] roleNames = model.RoleNames.Split(new string[] {","});

我可以得到一个人Role.Id:


RoleManager.Roles.FirstOrDefault(r => r.Name == roleName).Id

如何有效地使用 LINQ/Lambda 转换roleNames为数组或列表,roleIds然后如何使用该数组/列表仅过滤包含在这些角色中的用户?


鸿蒙传说
浏览 137回答 2
2回答

幕布斯7119047

也许是这个;var reqRoles = model.RoleNames.Split(new string[] {","}).ToList();var findRoles = RolesManager.Roles.Where(r => reqRoles.Contains(r.Name)).Select(r => r.Id).ToList();然后您可以通过角色 ID 查找用户。用手机写,抱歉可能有语法错误。
随时随地看视频慕课网APP
我要回答