c# - 过滤对象集合以检查它们是否具有数组的属性部分
问题描述
给定一个字符串集合:
List<string> roles;
和用户定义:
public class User
{
public List<Role> Roles {get;set;}
}
public class Role {
public string RoleName {get;set;}
}
如果我有一个列表用户和字符串集合角色,我如何过滤在角色数组中具有指定角色的用户?
List<string> roles = ...;
List<User> users = ...;
List<User> filteredUsers = new List<User>();
//I am stuck trying to figure out a single lambda expression to populate filteredUsers
filteredUsers = users.FindAll(u => u.Roles.Contains(r => r.RoleName.Contains(roles)));
因此,如果角色包含“管理员、超级用户”filteredUsers 将只是管理员和超级用户。
解决方案
尝试这个:
var filteredUsers = users.Where(x => x.Roles.Any(z => roles.Contains(z.RoleName)));
注意:如果您使用 LINQ to db(例如实体框架),性能将非常糟糕。
推荐阅读
- java - 如何使用户按下的按钮在按下时缩小?
- android - 从 .apk 到 .aab 的本地构建版本反应,如何将应用程序发送给客户端?
- python - PyTorch:使用相同随机种子的不同训练精度
- python-3.x - 里面怎么写
在 python 3 中使用 selenium webdriver 标记?
- python-3.x - 在 python 3.6 中出现缩进或空格错误
- java - 为什么私有 getter 方法违反封装,而缺少 getter 方法却没有?
- python-3.x - 无包几何平均算法
- testing - 如何使用 VS Code 配置 Mocha
- python - 如何使用python从web gif文件中提取文本
- python-3.x - 为什么要交换这些变量?