Die Serie zu den Neuerungen in .NET 6 behandelt im achten Teil einen Operator zum Erstellen von Schnittmengen.
Im den beiden letzten Teilen der .NET 6-Serie habe ich DistinctBy()
und UnionBy()
behandelt. .NET 6 bietet mit IntersectBy()
einen weiteren neuen Mengenoperator, der aus zwei Mengen anhand eines Kriteriums eine Schnittmenge erzeugt.
Gegeben sei eine Menge von Personen mit ihren Lieblingsfarben
var personen = new (string Name, string Farbe)[] {
("Annalena", "grün"), ("Olaf", "rot"),
("Norbert", "rot"), ("Saskia","rot"),
("Robert", "grün"), ("Armin", "schwarz"),
("Christian", "gelb") };
und eine Liste von Farben in Form von Zeichenketten
List<string> farben = new() { "grün", "rot" };
Nun kann man mit IntersectBy()
eine Schnittmenge bilden:
Func<(string Name, string Farbe), string>
keySelector = x => x.Farbe;
var schnittmenge =
personen.IntersectBy(farben, keySelector).ToList();
Das Ergebnis in der Schnittmenge ist folgendes:
(Annalena, grün)
(Olaf, rot)
Das bedeutet IntersectBy()
wählt wie DistinctBy()
und UnionBy()
nur jeweils das erste passende Elemente aus und ignoriert alle anderen.
()