![](/img/trans.png)
[英]How do I build a new object that contains a List<string> as attribute?
[英]Finding in a list that contains an attribute of an object
我正在尝试查找列表中的哪些项目符合特定条件。
我有一个List<Employee>
,每个Employee
都有一个List<Role>
属性。 每个Role
都有一个ID
作为属性。 我正在尝试查找列表中具有特定Role ID
所有Employee
。 这是我的无效示例:
var query = EmployeeList.Where(employee=> employee.Roles.Contains(role => role.ID == roleID)).ToList();
var query = EmployeeList.Where(employee => employee.Roles
.Any(role => role.Id == roleID))
.ToList();
您可以将“ Contains
更改为“ Any
(因为您只是在检查员工的任何角色是否符合您的条件):
var query = EmployeeList.Where(employee => employee.Roles
.Any(role => role.ID == roleID))
.ToList();
请注意,这并不是一种非常有效的方法-必须检查每个员工,以及每个员工的每个角色。 如果需要经常使用相同的一组雇员但使用不同的角色ID来执行此操作,则可以从角色ID到雇员进行查找:
var lookup = EmployeeList.SelectMany(e => e.Roles,
(e, r) => new { Employee = e, Role = e })
.ToLookup(pair => pair.Role.ID,
pair => pair.Employee);
然后,您可以使用:
foreach (var employee in lookup[roleID])
{
....
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.