我有两个List<Animal>,我想比较一下,找出两个List<Animal>对象之间的区别。
Animal对象包含以下属性。
Id 名字 年龄
List list1有10个Animal对象的计数,其中list2有另外10个Animal对象。在这两个列表中有两个项(相同的Animal对象)
当我使用Except函数时,我希望remainingList只包含两个列表之间不常见的对象。但是,remainingList包含一个list1副本。
我怎么才能解决这个问题?
List<Animal> remainingList = list1.Except(list2).toListAsync();发布于 2018-10-10 11:05:09
您需要重写类中的Equal和GetHashCode。就像这样:
public class Animal
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public override bool Equals(object obj)
{
if (!(obj is Animal))
return false;
var p = (Animal)obj;
return p.Id == Id && p.Name == Name && p.Age == Age;
}
public override int GetHashCode()
{
return String.Format("{0}|{1}|{2}", Id, Name, Age).GetHashCode();
}
}或者使用更新版本的C#,您可以:
public override int GetHashCode() => $"{Id}|{Name}|{Age}".GetHashCode();https://stackoverflow.com/questions/52738755
复制相似问题