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

时间:2015-09-01 13:37:52

标签: c# linq

我有一个班级Employee

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

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

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

1 个答案:

答案 0 :(得分:5)

看起来非常简单GroupBy - 假设您的List<Employee>位于变量employees中:

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

变量dupes现在将包含具有属性

的可枚举匿名对象列表
  • SSN
  • empNumber

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