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.
()