检查2列表相互对立

时间:2014-09-22 05:00:44

标签: c#

说我有两份水果清单。我的第一个清单有一个苹果,橙子和香蕉。我的第二个清单有橙色,香蕉和苹果。我不确定列表中这些项目的顺序是否重要。我想比较列表,如果它们彼此相等,那么我会做点什么。这将比较列表中的所有对象,无论顺序如何?

   foreach(Fruit fruit1 in list1)
      foreach(Fruit fruit2 in list2)
      {
          if(fruit1.Equals(fruit2)
          //do something
      }

1 个答案:

答案 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());