Die Tage stand ich vor der Aufgabe, den Inhalt von zwei Listen miteinander zu vergleichen. Anfangs dachte ich, dass das mit einem einfachen „.Equals()“ geht. Leider musste ich schnell feststellen, dass dies nicht von Erfolg gekrönt war.

Also hab ich das ganze mit einer foreach-Schleife versucht. Hier kam dann schnell die Frage auf, was mach ich wenn z.B. Liste A 10 Elemente hat und Liste B 15. Jetzt kann es ja sein, das alle Elemente von Liste A in Liste B vorkommen. Somit müsste ich ja zwei foreach-Schleifen nacheinander laufen lassen. Das ganze würde dann so aussehen:

Wie man sehen kann, muss man die Funktion zweimal aufrufen um sicherzustellen, ob der Inhalt wirklich gleich ist.

Da mir die Lösung nicht ganz so gut gefiel hab ich mal etwas gegoogelt und bin dabei über die Funktionen Intersect, Union und Except gestolpert. Nach etwas mehr Recherche und hin und her probieren hab ich eine einfachere Lösung für das ganze gefunden:

Mit dieser Funktion, werden erst beide Listen mit der Funktion Union zu einer zusammengefügt (Zeile 27). Hierbei werden doppelte Einträge direkt eliminiert. Im zweiten Schritt (Zeile 30) werden mit dem Befehl Intersect alle Elemente ermittelt, welche in beiden Listen vorkommen. Anschließend (Zeile 33) wird mit dem Befehl Except in der Union-Liste geschaut, ob es Einträge gibt, welche nicht in der Intersect Liste auftauchen. Sollte dies der Fall sein, beinhaltet eine der beiden Listen mehr Einträge. So kann man einfach am Ende schauen ob Einträge in der Except-Lise vorhanden sind. Ist dies der Fall, sind die Listen bzw. deren Inhalt unterschiedlich.

Am Anfang wirkt das ganze etwas verwirrend aber wenn man ein paar Beispiele durchgearbeitet hat und das ganze auch einmal durch debugged hat, wird es aber recht schnell klar was dort genau abläuft.