说我有两份水果清单。我的第一个清单有一个苹果,橙子和香蕉。我的第二个清单有橙色,香蕉和苹果。我不确定列表中这些项目的顺序是否重要。我想比较列表,如果它们彼此相等,那么我会做点什么。这将比较列表中的所有对象,无论顺序如何?
foreach(Fruit fruit1 in list1)
foreach(Fruit fruit2 in list2)
{
if(fruit1.Equals(fruit2)
//do something
}
答案 0 :(得分:3)
我建议为你的Fruit类实现IEqualityComparer
。这样的事情(假设您在Name
属性上进行比较):
public class FruitEqualityComparer : IEqualityComparer<Fruit>
{
public bool Equals(Fruit f1, Fruit f2)
{
if (f1.Name == f2.Name)
{
return true;
}
else
{
return false;
}
}
public int GetHashCode(Fruit fruit)
{
return fruit.Name.GetHashCode();
}
}
然后你可以检查这样的平等:
var areEqual = fruit1.SequenceEqual(fruit2, new FruitEqualityComparer());