public class MyClass
{
public int Id { get; set; }
public string Name { get; set; }
}
// 假设有一个 List<MyClass> 类型的变量 list,需要根据 Id 和 Name 属性去重
var distinctList = list.Distinct(new MyClassComparer()).ToList();
public class MyClassComparer : IEqualityComparer<MyClass>
{
public bool Equals(MyClass x, MyClass y)
{
return x.Id == y.Id && x.Name == y.Name;
}
public int GetHashCode(MyClass obj)
{
return obj.Id.GetHashCode() ^ obj.Name.GetHashCode();
}
}
可以实现根据 Id 和 Name 属性进行去重,Distinct 方法会根据自定义的比较器进行元素去重,并且保留了原始列表中的元素顺序