如何解决Linq计数表达式
| 假设以下Employee类(是的,我知道我不应该公开公开List,但这只是一个例子):class Employee
{
public string Name {get; set;}
public List<string> Skills {get; set;}
}
技能只是员工拥有的技能列表,例如“编程”,“客户服务”等。
现在假设我有一个List<Employee> CurrentEmployees
,并且我还有另一个雇员Employee NewHire
不在CurrentEmployees
列表中。
我的目标是使用lambda表达式来计算CurrentEmployees
中有多少雇员至少具有NewHire
也具有的一项技能。因此,例如,如果ѭ3one包含一个雇员拥有Skills{\'Programming\',\'Troubleshooting\'}
,另一个雇员具有Skills{\'Accounting\',\'Finance\'}
,而NewHire拥有Skills{\'Programming\',\'Networking\'}
,我想要一个返回1的表达式,因为列表中的第一个雇员也具有\ Programming \的技能。 .. 这可能吗?
谢谢你的帮助。
解决方法
currentEmployees.Count(ce =>
ce.Skills.Intersect(newHire.Skills).Any())
, var currentEmployees = new List<Employee>
{
new Employee { Skills = new List<string> { \"Programming\",\"Troubleshooting\" } },new Employee { Skills = new List<string> { \"Accounting\",\"Finance\" } },};
var newHire = new Employee { Skills = new List<string> { \"Programming\",\"Networking\" } };
var count = currentEmployees.Count(e => e.Skills.Any(newHire.Skills.Contains));
// count == 1
, 如果性能很重要,我将使用HashSet<string>
:
var newHireSkills = new HashSet<string>(newHire.Skills);
var count = currentEmployees.Count(e => e.Skills.Any(s => newHireSkills.Contains(s)));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。