-2

如果数组中存在的角色已经包含在用户角色列表中,我想过滤用户数组。

这是我无法编译的代码:

var roles = role.Split(','); // admin, basic, super-admin

listOfUsers = listOfUsers.Where(user => user.Roles.Contains(roles.Select(x => x)).ToList();

如果 admin 和 basic 包含在字符串数组中,我想这样做,roles以仅返回那些在Roles数组中具有相同值的用户。(角色也是字符串列表)但这会重现错误:

在此处输入图像描述

4

1 回答 1

2

要在另一个字符串列表中查找匹配项,您可以检查列表Any中是否包含用户角色roles

listOfUsers = listOfUsers.Where(user => user.Roles.Any(roles.Contains)).ToList();

如果要进行不区分大小写的比较,可以将比较器传递给Contains方法:

listOfUsers = listOfUsers
    .Where(user => 
        user.Roles.Any(role => roles.Contains(role, StringComparer.OrdinalIgnoreCase)))
    .ToList();
于 2020-09-01T21:25:18.303 回答