.net 在C#中比较两个对象列表并检索另一个具有不匹配记录的列表

3z6pesqy  于 2023-01-06  发布在  .NET
关注(0)|答案(1)|浏览(306)

我有两个对象列表,我需要比较这两个列表,并得到不匹配记录的结果。

var oldlist = new List<Employee>{
new Employee(){EmployeeID=123,Name="XXXX",Gender="Male",code="CSE"},
new Employee(){EmployeeID=231,Name="FFF",Gender="Male",code="EC"},
new Employee(){EmployeeID=431,Name="GGG",Gender="Female",code="IT"},
new Employee(){EmployeeID=543,Name="DDD",Gender="Female",code="IT"}
}
var newlist = new List<Employee>{
new Employee(){EmployeeID=123,Name="HHH",Gender="Male",code="IT"},
new Employee(){EmployeeID=231,Name="JJJ",Gender="FeMale",code="CSE"},
new Employee(){EmployeeID=431,Name="GGG",Gender="Female",code="IT"},
new Employee(){EmployeeID=543,Name="DDD",Gender="Female",code="IT"}
}

在上面的代码中,EmployeeId将是相同的,但任何其他值都会发生变化,例如EmployeeId 123和231的值会发生变化。我只需要获取上面示例中不匹配的记录,结果应该只给予EmployeeId为123和231的记录,因为其余记录未发生变化。

83qze16e

83qze16e1#

可以使用list1.except(list2)来查找两个列表之间的集合差异:-find-the-set-difference-between-two-lists-linq

var result= oldlist.Except(newlist).ToList();
    • 编辑:**

可以使用以下方法比较两个对象列表:

List<Employee> list=new List<Employee>();
        foreach (var item in oldlist)
        {
            if(!newlist.Any(p=>p.EmployeeID==item.EmployeeID && p.Name == item.Name && p.Gender == item.Gender && p.code == item.code))
               list.Add(item);
        }

相关问题