我有一个班级Employee
:
public class Employee
{
public string SSN;
public string empNumber;
public int someValue;
}
我想检查员工是否共享类似的SSN和类似的empNumber。我有List<Employee>
可供搜索。员工不能拥有相同的SSN和empNumber。最终,我想填充一个列表,其中包含仅共享SSN和empNumber的员工。如果此列表的大小不是0,那么我知道发送错误消息。
我知道我可以使用LINQ或foreach,但我不确定哪种情况最适合这种情况。
答案 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>
,其中包含重复项(来自原始列表)。