以下是一个示例代码,用于比较两个C#中的相同对象集合,并找到新增、修改或删除的记录:
using System;
using System.Collections.Generic;
using System.Linq;
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
}
class Program
{
static void Main(string[] args)
{
List oldList = new List
{
new Person { Id = 1, Name = "John" },
new Person { Id = 2, Name = "Mary" },
new Person { Id = 3, Name = "David" }
};
List newList = new List
{
new Person { Id = 1, Name = "John" },
new Person { Id = 2, Name = "Mary" },
new Person { Id = 4, Name = "Adam" }
};
// 查找新增的记录
var addedRecords = newList.Except(oldList, new PersonComparer()).ToList();
// 查找修改的记录
var modifiedRecords = newList.Intersect(oldList, new PersonComparer()).ToList();
// 查找删除的记录
var deletedRecords = oldList.Except(newList, new PersonComparer()).ToList();
// 输出结果
Console.WriteLine("Added Records:");
foreach (var record in addedRecords)
{
Console.WriteLine($"Id: {record.Id}, Name: {record.Name}");
}
Console.WriteLine("Modified Records:");
foreach (var record in modifiedRecords)
{
Console.WriteLine($"Id: {record.Id}, Name: {record.Name}");
}
Console.WriteLine("Deleted Records:");
foreach (var record in deletedRecords)
{
Console.WriteLine($"Id: {record.Id}, Name: {record.Name}");
}
}
}
public class PersonComparer : IEqualityComparer
{
public bool Equals(Person x, Person y)
{
return x.Id == y.Id && x.Name == y.Name;
}
public int GetHashCode(Person obj)
{
return obj.Id.GetHashCode() ^ obj.Name.GetHashCode();
}
}
在上面的示例代码中,我们首先创建了两个包含Person
对象的列表oldList
和newList
。然后,我们使用LINQ查询语句来比较这两个列表并找出新增、修改和删除的记录。
我们实现了一个自定义的PersonComparer
类,用于比较Person
对象是否相等。通过重写Equals
方法和GetHashCode
方法,我们定义了如何判断两个Person
对象是否相等。
然后,我们使用LINQ的Except
方法来查找新增的记录,使用Intersect
方法来查找修改的记录,使用Except
方法来查找删除的记录。最后,我们将结果打印输出。
输出结果如下:
Added Records:
Id: 4, Name: Adam
Modified Records:
Id: 1, Name: John
Id: 2, Name: Mary
Deleted Records:
Id: 3, Name: David
在这个示例中,我们比较了Id
和Name
属性来判断Person
对象是否相等。你可以根据实际需求来修改比较的属性和逻辑。
下一篇:比较两个产品的大数据集