2010-10-07 3 views
3

J'ai deux listes de tableaudeux ArrayLists string

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") 

Je voudrais savoir quelles couleurs manquent de colors2 qui se trouvent dans colors1

+0

Qui SONT dans Colors1? – Scott

+0

@Scott - Désolé. Oui. – zeroef

Répondre

6

Regardez en utilisant la méthode Except. "Cette méthode renvoie les éléments en premier qui n'apparaissent pas en second et ne renvoie pas les éléments en second qui n'apparaissent pas en premier."

Vous pouvez donc simplement mettre les couleurs 2 comme premier argument et color1 comme second.

EDIT: Je voulais dire que vous pouvez mettre les couleurs 1 en premier et les couleurs 2 en second.

EDIT2: (par Sean)

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

+1 Je n'ai jamais remarqué cela auparavant. (Note: nécessite .NET 3.5 ou plus) – egrunin

+0

@egruni Ouais bon point. Merci d'avoir mentionné cela. Cela fait partie des méthodes d'extension de Linq. – spinon

+0

Je vais juste ajouter que la réponse pourrait être confuse, vous écririez quelque chose comme 'var missingFrom2 = colors1.Except (colors2);' –

1

Juste pour être complet, je vais ajouter la manière ancienne.

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 
Questions connexes