Distinct方法的第二重载可以
Enumerable.Distinct
例如数据类为
class School
{
public int Id { get; set; }
public string Name { get; set; }
//是否重点学校
public bool IsKeySchool { get; set; }
}
实现IEqualityComparer
class SchoolComparer : EqualityComparer
{
public override bool Equals(School x, School y)
{
return x.IsKeySchool==y.IsKeySchool;
}
public override int GetHashCode(School obj)
{
return obj.IsKeySchool.GetHashCode();
}
}
原始列表为
var schoolList = new List
new School{Id=1, Name="三中",IsKeySchool=true},
new School{Id=2, Name="五中",IsKeySchool=true},
new School{Id=3, Name="十中",IsKeySchool=false},
new School{Id=4, Name="十五中",IsKeySchool=true},
new School{Id=5, Name="二十中",IsKeySchool=false},
};
执行
var tempList = schoolList.Distinct(new SchoolComparer());
结果就只有两条“三中”和“十中”