2010-10-07 125 views
3

我有兩個數組列表比較兩個字符串的ArrayList

dim Colors1 = New ArrayList 
    Colors1.Add("Blue") 
    Colors1.Add("Red") 
    Colors1.Add("Yellow") 
    Colors1.Add("Green") 
    Colors1.Add("Purple") 

    dim Colors2 = New ArrayList 
    Colors2.Add("Blue") 
    Colors2.Add("Green") 
    Colors2.Add("Yellow") 

我想找出哪些顏色從Colors2缺少在COLORS1

+0

那是顏色1? – Scott 2010-10-07 20:43:30

+0

@Scott - 對不起。是。 – zeroef 2010-10-07 20:53:19

回答

6

看看使用Except方法發現。 「這個方法首先返回那些不會出現在第二個元素中的元素,它不會在第一個返回那些不會返回的元素。」

因此,您可以將顏色2作爲第一個參數,將colors1作爲第二個參數。

編輯:我的意思是你可以把顏色1第一和顏色2作爲第二。

EDIT2:(每肖恩)

var missingFrom2 = colors1.Except(colors2); 
+0

+1以前從未注意到這一點。 (注意:需要.NET 3.5或更高版本) – egrunin 2010-10-07 20:49:30

+0

@egruni是的好點。謝謝你提到這一點。它是Linq擴展方法的一部分。 – spinon 2010-10-07 20:50:35

+0

我只是添加,因爲答案可能會令人困惑,你會寫'var missingFrom2 = colors1.Except(colors2);' – 2010-10-07 20:53:21

1

只是爲了保持完整性,我將添加老式的方法。

List<string> result = new List<string>(); 

foreach (string s in Colors1) 
    if (Colors2.Contains(s) == false) 
     result.add(s); 

// now result has the missing colors