定义
public class Person{
public string name {get;set;}
public int age {get;set;}
}
public class PersonComparer : IEqualityComparer<Person>
{
public bool Equals(Person x, Person y)
{
if (ReferenceEquals(x, y)) return true;
if (ReferenceEquals(x, null) || ReferenceEquals(y, null)) return false;
//此处修改需要对比的字段,当前表示使用age和name两个字段为去重条件,筛选List中age和name都相同的内容去重
return x.age == y.age && x.name == y.name ;
}
public int GetHashCode(Person obj)
{
//此处修改需要对比的字段,当前表示使用age和name两个字段为去重条件,筛选List中age和name都相同的内容去重
return obj.name.GetHashCode() ^ obj.age.GetHashCode() ;
}
}
调用
List<Person> people = new List<Person>
{
new Person("Alice", 30),
new Person("Bob", 25),
new Person("Alice", 30) // 这个人的Name和Age与第一个相同,应该被视为重复
};
// 使用Distinct方法和自定义的IEqualityComparer<Person>进行去重
List<Person> distinctPeople = people.Distinct(new PersonComparer()).ToList();
本文介绍了如何在C#中创建一个名为Person的类,并通过自定义的IEqualityComparer<Person>来比较Person对象的age和name属性,以便在List<Person>中进行去重操作,示例展示了如何使用Distinct方法结合自定义比较器。
856

被折叠的 条评论
为什么被折叠?



