2010-10-07 2 views
3

у меня есть два списка массиваСравнить две строки ArrayLists

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, которые находятся в цвета1

+0

Это в цветах1? – Scott

+0

@Scott - Извините. Да. – zeroef

ответ

6

Посмотрите на использование Except метода. «Этот метод сначала возвращает те элементы, которые не отображаются во втором. Он также не возвращает те элементы во втором, которые не отображаются в первую очередь».

Таким образом, вы можете просто поместить цвета 2 в качестве первого аргумента и colors1 в качестве второго.

EDIT: Я имел в виду, что вы можете поместить цвета 1 сначала, а цвета 2 - как второй.

EDIT2: (за Шоном)

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

+1 Никогда не замечал этого раньше. (Примечание: требуется .NET 3.5 или выше) – egrunin

+0

@egruni Да, хорошая точка. Спасибо, что упомянули об этом. Он является частью методов расширения Linq. – spinon

+0

Я просто добавлю, так как ответ может ввести в заблуждение, вы должны написать что-то вроде «var missingFrom2 = colors1.Except (colors2);» –

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 
Смежные вопросы