2014-09-22 80 views
1

說我有兩個水果名單。我的第一個名單有一個蘋果,橙子和香蕉。我的第二個名單有橙子,香蕉和蘋果。我不確定列表中這些項目的順序是否重要。我想比較名單,如果他們是平等的,那麼我做一些事情。這將比較列表中的所有對象,無論順序如何?檢查2列表彼此

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

沒有。 foreach將依次遍歷每個列表。您需要使用'.Contains()'來檢查一個項目是否包含在另一個列表中。 – 2014-09-22 05:02:32

回答

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()); 
+0

+1。我總是忘記'SequenceEqual'。刪除了我的答案。 – 2014-09-22 05:10:08