2010-10-07 121 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