Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

LINQ Grundkurs

Grundlegende Mengenoperationen

Testen Sie unsere 2015 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Neben der reinen Verkettung von Listen betrachtet dieses Video auch Klassiker wie Schnittmenge oder Differenz.
05:16

Transkript

Kommen wir nun zu den Mengenoperationen. Dafür habe ich zwei Listen angelegt. Liste a enthält die Elemente 1, 1 und 2, also die 1 ist doppelt. Und Liste b enthält die Elemente 2 und 3. Daher gibt es eine Überschneidung zwischen den beiden Listen, und zwar in Form der 2. Eine Dopplung wie wir sie in a sehen, kann man leicht entfernen über den Befehl Distinct. Mit Distinct werden alle doppelten Element entfernt und kommen dann nur ein einziges Mal in der Ergebnisliste vor. Distinct hat außerdem die Möglichkeit einer Überladung. An dieser Stelle kann ich einen IEqualityComparer übergeben. Der Grund für diesen IEqualityComparer ist, dass standardmäßig der Vergleich von Elementen über die Equals-Methode gemacht wird, die standardmäßig von object kommt. Es gibt aber Situationen, in denen man fallabhängig unterschiedliche Vergleiche vornehmen möchte. Da man die Equals-Methode nur einmal ausprogrammieren kann, bietet es sich also an, falllspezifisch einen solchen IEqualityComparer zu nutzen, wo es sinnvoll ist. Sie müssen aber in jedem Fall Ihre Equals-Methode entsprechend ausprogrammieren, wenn sie Distinct bei komplexen Typen richtig einsetzen wollen. Kommen wir zur nächsten Funktion, und zwar Union. Mit Union können wir eine Vereinigung von Liste a und b herbeiführen. wobei im Ergebnis alle Dopplungen entfernt werden. Wenn ich sage alle Dopplungen, meine ich auch alle Dopplungen, denn in der Ergebnisliste wird tatsächlich auch die doppelte 1 entfernt, die in Liste 1 enthalten ist. Es werden nicht nur die Elemente entfernt, die in beiden Listen doppelt enthalten sind, also wie hier diese Ziffern 2. Aus diesem Grund kriegen wir als Ergebnis 1, 2 und 3. Auch Union hat wieder die Überladungsmöglichkeiten mit IEqualityComparer, so wie es bei fast allen der folgenden Methoden der Fall ist. Neben Union haben wir noch Intersect. Mit Intersect wählen wir nur die Schnittmenge aus. Das ist bei unserer Liste die 2. Also es werden nur die Elemente übernommen, die auch in beiden Listen enthalten sind. Demgegenüber steht Except, bei dem nur die Elemente in der Ergebnismenge enthalten sind, die ausschließlich in der ersten Liste enthalten waren. Auch hier wird ein Distinct durchgeführt, wodurch die 1 nur einmal vorkommt. Der nächste Befehl, den wir nutzen, ist Zip. Er ist etwas komplexer. Mit ihm können wir beide Listen miteinander vereinigen und dabei auch noch eine Berechnung vornehmen, beziehungsweise eine Auswahl vornehmen. Der erste Parameter, den wir übergeben, ist die zweite Liste, die wir verarbeiten wollen. Und dann übergeben wir eine Lambda Expression, die zuerst das Element der ersten Liste bekommt, das wir betrachten. Und an gleicher Stelle auch noch das aktuelle Element in der zweiten Liste. Also im ersten Fall sind das 1 und 2, und im zweiten Fall 1 und 3. Zurückgegeben werden soll das Element, was in die neue Liste einzufügen ist. Dafür mache ich einfach mal eine Addition, dass first und second miteinander addiert werden. Interessant ist an dieser Stelle zuerst, dass unsere Addition gut funktioniert hat. 1 und 2 ergibt 3. 1 und 3 ergibt 4. Wichtig ist dabei aber, dass der Zip-Befehl nur so lange durchlaufen wird, bis alle Elemente einer der Listen abgearbeitet sind. Aus diesem Grund wird die 2 nicht weiter betrachtet. Der letzte Befehl, den wir uns ansehen, ist Concat. Concat ist wieder recht einfach. Damit schaffen wir eine Vereinigungsmenge beider Listen. Diese enthält dann wirklich alle Elemente und entfernt keine doppelten Einträge. Sie funktioniert so ähnlich wie Union, nur dass Union noch die Glättung vornimmt, indem es Dopplungen entfernt. Sie haben also gesehen, wie Distinct, Union, Intersect, Except, Zip und Concat funktionieren.

LINQ Grundkurs

Lernen Sie die LINQ-Operationen kennen und erstellen Sie praktische Abfragen direkt in C# und .NET.

2 Std. 10 min (26 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Hersteller:
Software:
Exklusiv für Abo-Kunden
Erscheinungsdatum:24.10.2016

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!