【发布时间】:2020-09-01 21:17:01
【问题描述】:
如果数组中存在的角色已经包含在用户角色列表中,我想过滤用户数组。
这是我无法编译的代码:
var roles = role.Split(','); // admin, basic, super-admin
listOfUsers = listOfUsers.Where(user => user.Roles.Contains(roles.Select(x => x)).ToList();
如果 admin 和 basic 包含在 roles 中,我想这样做,这是一个字符串数组,仅返回那些在 Roles 数组中具有相同值的用户。 (角色也是字符串列表)但这会重现错误:
【问题讨论】:
-
你能添加更多代码吗?
listOfUsers等的类型是什么?user.Roles是什么类型? -
您是在寻找具有
roles中指定的所有角色的用户,还是在roles中具有任何角色的用户? -
@DavidFox 声明
Roles也是List<string> -
@RufusL 对于在角色中指定了任何角色的用户。是的
Roles也是List<string> -
假设
user.Roles是IEnumerable<string>,那么user.Roles.Contains(roles.Select(x => x))期望string作为参数。我们知道roles是string[](假设role是一个包含用逗号分隔的内容的字符串)。然后,roles.Select(x=>x)是IEnumerable<string>而不是函数期望的string。如果您给我们更多代码(如@DavidFox 所建议)并且您的变量名不是role、roles和Roles,这会容易得多