zurück zum Artikel

Neu in .NET 6 [8]: Neuer LINQ-Operator IntersectBy()

Dr. Holger Schwichtenberg

Die Serie zu den Neuerungen in .NET 6 behandelt im achten Teil einen Operator zum Erstellen von Schnittmengen.

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() [1] und UnionBy() [2] 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.
( [3])


URL dieses Artikels:
https://www.heise.de/-6281567

Links in diesem Artikel:
[1] https://www.heise.de/blog/Neu-in-NET-6-6-LINQ-Operator-DistinctBy-6268938.html
[2] https://www.heise.de/blog/Neu-in-NET-6-7-Neuer-LINQ-Operator-UnionBy-6275431.html
[3] mailto:hs@ix.de