Neu in .NET 6 [8]: Neuer LINQ-Operator IntersectBy()
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
Copyright © 2021 Heise Medien