在对象列表中查找相似的属性

本文关键字:相似 属性 查找 对象 列表 | 更新日期: 2023-09-27 18:10:46

我有一个类Employee:

public class Employee
{
    public string SSN;
    public string empNumber;
    public int someValue;
}

我想检查员工是否共享相似的SSN和相似的empNumber。我有一个List<Employee>可以搜索。员工的SSN和empNumber不能相同。最后,我想填充一个列表,其中包含只共享SSN和empNumber的员工。如果这个列表的大小不是0,那么我知道要发送错误消息。

我知道我可以使用LINQ或foreach,但我不确定哪种方法最适合这种情况。

在对象列表中查找相似的属性

似乎是一个相当简单的GroupBy -假设您的List<Employee>是在一个变量employees:

var dupes = employees.GroupBy(e => new {e.SSN, e.empNumber})
                 .Where(g => g.Count() > 1);

变量dupes现在将包含一个可枚举的匿名对象列表,其属性为

  • SSN
  • empNumber

表示副本。每个项目本身也是一个IEnumerable<Customer>,其中包含自己的副本(来自原始列表)。