自定义比较方法IEqualityComparer的运用
时间:2010-09-04 来源:pxeric
今天在项目中就遇到一个这样的问题,当我把两个集合连接在一起并且想去除重复项时,利用.Distinct()无效,它出现的还是重复项。查了下资料,办法是自定义一个比较方法,如下:
List<Student> list = new List<Student>();
Student a = new Student
{
UserId = 1,
StudentName = "Eric"
};
Student b = new Student
{
UserId = 1,
StudentName = "Eric"
};
Student c = new Student
{
UserId = 2,
StudentName = "laoyi"
};
list.Add(a);
list.Add(b);
list.Add(c);
var tt = list.Distinct(new StudentComparer());
public class Student
{
public int UserId { get; set; }
public string StudentName { get; set; }
}
自定义的比较类:
public class StudentComparer : IEqualityComparer<Student>
{
public bool Equals(Student x, Student y)
{
return x.UserId.Equals(y.UserId);
}
public int GetHashCode(Student obj)
{
return obj.UserId.GetHashCode();
}
}
上述实例是排除ID相等的。