So führen Sie Left Outer Joins aus – LINQ in C#

So Fuhren Sie Left Outer Joins Aus Linq In C



Um übereinstimmende Datensätze aus der linken Tabelle und der rechten Tabelle in SQL anzuzeigen, ist der linke äußere Join eine Art von Join-Operation, die verwendet wird. In LINQ kann die linke äußere Verknüpfung mit den Methoden GroupJoin() und SelectMany() ausgeführt werden. In diesem Artikel wird ausführlich die Durchführung von linken äußeren Verknüpfungen in LINQ mit C# erläutert.

So führen Sie Left Outer Joins in LINQ mit C# durch

Um einen linken äußeren Join in LINQ auszuführen, können Sie die GroupJoin()-Methode verwenden, um zwei Sequenzen basierend auf einem gemeinsamen Schlüssel zu verbinden, und dann die SelectMany()-Methode verwenden, um das Ergebnis zu glätten, hier ist ein Beispiel:







mit System;
mit System.Linq;

Klasse Programm
{
statische Leere Main ( )
{
var links = neu [ ] { 1 , 2 , 3 } ;
var rechts = neu [ ] { 2 , 3 , 4 } ;
var result = left.GroupJoin (
Rechts,
l = > Ich,
r = > R,
( l, r ) = > neu { Links = l, Rechts = r.DefaultIfEmpty ( ) } )
.Viele auswählen (
lr = > lr.Rechtsauswahl (
r = > neu { Links = lr.Links, Rechts = r } ) ) ;
für jede ( var-Element In Ergebnis )
{
Console.WriteLine ( '{0} {1}' , Artikel.Links, Artikel.Rechts ) ;
}
}
}



Dieser Code führt einen linken äußeren Join auf zwei Arrays links und rechts aus und gibt das Ergebnis an die Konsole aus. Die Methode GroupJoin() führt die Verknüpfung durch, und die Viele auswählen () -Methode wird verwendet, um das Ergebnis zu glätten. Schließlich wird das Ergebnis mithilfe einer foreach-Schleife und der WriteLine()-Funktion auf der Konsole ausgegeben:







Hier ist ein weiteres Beispiel, das die Verwendung von ausgelassenen Verknüpfungen demonstriert, indem die jeweiligen Mitarbeiternamen und ihre relevanten Abteilungen angezeigt werden. Jedem Mitarbeiter und jeder Abteilung wurde eine Nummer zugewiesen, die dann verwendet wird, um die entsprechende Abteilung dem jeweiligen Mitarbeiter zuzuordnen, hier ist der vollständige Code dafür:

mit System;
mit System.Collections.Generic;
mit System.Linq;

Namensraum IhrNamensraum
{
Klasse Programm
{
statische Leere Main ( Schnur [ ] Argumente )
{
Aufführen < Mitarbeitername > Mitarbeiter = neue Liste < Mitarbeitername >
{
neuer Mitarbeitername { ID = 1 , Name = 'Sich selbst' , Abteilungs-ID = 1 } ,
neuer Mitarbeitername { ID = 2 , Name = 'John' , Abteilungs-ID = 2 } ,
neuer Mitarbeitername { ID = 3 , Name = 'Kevin' , Abteilungs-ID = 2 } ,
neuer Mitarbeitername { ID = 4 , Name = 'Bob' , Abteilungs-ID = 3 }
} ;

Aufführen < Abteilung > Abteilungen = neue Liste < Abteilung >
{
neue Abteilung { ID = 1 , Name = 'Inhalt schreiben' } ,
neue Abteilung { ID = 2 , Name = 'Marketing' } ,
neue Abteilung { ID = 3 , Name = 'Maschinenbau' }
} ;

var query = von Mitarbeitername In Mitarbeiter
verbinden Abteilung In Abteilungen
auf Mitarbeitername.Abteilungs-Id gleich Abteilung.Id in Abteilungsgruppe
aus Abteilung In DepartmentGroup.DefaultIfEmpty ( )
wählen neu { MitarbeiternameName = Mitarbeitername.Name, Abteilungsname = Abteilung?.Name ?? 'Keiner' } ;

für jede ( war das Ergebnis In Anfrage )
{
Console.WriteLine ( $ 'Mitarbeitername: {result.EmployeenameName}, Abteilung: {result.DepartmentName}' ) ;
}
}
}

Klasse Mitarbeitername
{
öffentliche int-ID { erhalten; Satz ; }
öffentliche Zeichenfolge Name { erhalten; Satz ; }
public int Abteilungs-ID { erhalten; Satz ; }
}

Klasse Abteilung
{
öffentliche int-ID { erhalten; Satz ; }
öffentliche Zeichenfolge Name { erhalten; Satz ; }
}
}



Zunächst werden Musterdaten angegeben, die den Mitarbeiternamen und den Namen der Abteilungen enthalten, und anschließend wird jeder eine entsprechende Nummer gegeben. Als nächstes wird die Join-Operation mit dem join-Befehl durchgeführt und danach wird das Ergebnis in einer Variablen namens query gespeichert, als nächstes wird die for-Schleife verwendet, um die Namen und Abteilungen der jeweiligen Mitarbeiter auszugeben, und die Ausgabe des Codes sieht so aus :

Abschluss

Left Outer Join ist eine gängige Operation in SQL und kann auch einfach mit LINQ in C# ausgeführt werden. Mit den Methoden GroupJoin() und SelectMany() können Sie Left Outer Joins für zwei Sequenzen basierend auf einem gemeinsamen Schlüssel ausführen. Obwohl die Syntax zum Durchführen von Left Outer Joins in LINQ für Anfänger möglicherweise schwer verständlich ist, handelt es sich um eine leistungsstarke und flexible Sprache, mit der komplexe Abfragen problemlos ausgeführt werden können.