微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Linq计数表达式

如何解决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 举报,一经查实,本站将立刻删除。