Jak wykonać lewe zewnętrzne połączenia - LINQ w C#

Jak wykonać lewe zewnętrzne połączenia - LINQ w C#

Aby wyświetlić dopasowane rekordy z lewej tabeli, a prawa tabela w SQL lewe zewnętrzne połączenie to rodzaj używanego operacji połączenia. W LINQ, lewe zewnętrzne połączenie można wykonać za pomocą metod GroupJoin () i SelectMany (), w tym artykule omówiono wykonywanie lewych połączeń zewnętrznych w LINQ za pomocą C#.

Jak wykonać lewe zewnętrzne połączenia w LINQ za pomocą C#

Aby wykonać lewy zewnętrzny łącznik w LINQ, możesz użyć metody GroupJoin (), aby dołączyć do dwóch sekwencji na podstawie wspólnego klucza, a następnie użyć metody SelectMany (), aby spłaszczyć wynik, oto przykład:

za pomocą systemu;
za pomocą systemu.Linq;
Program klasowy

statyczne void main ()

var left = new [] 1, 2, 3;
var right = new [] 2, 3, 4;
var wynik = lewy.GroupJoin (
Prawidłowy,
l => l,
r => r,
(l, r) => nowy left = l, prawy = r.DefaultifEmpty ())
.Selectmany (
LR => LR.Prawidłowy.Wybierać(
r => nowy left = lr.Lewy, w prawo = r));
Foreach (wynik VAR w wyniku)

Konsola.WriteLine ("0 1".Po lewej, przedmiot.Prawidłowy);


Ten kod wykonuje lewy zewnętrzny łącznik na dwóch tablicach w lewo i w prawo i drukuje wynik do konsoli. Metoda GroupJoin () wykonuje połączenie, a Selekcja () Metoda stosuje się do spłaszczenia wyniku. Wreszcie wynik jest drukowany do konsoli za pomocą funkcji Foreach Loop i WriteLine ():

Oto kolejny przykład, który pokazuje użycie wykonywania pominięć, wyświetlając odpowiednie nazwiska pracowników i ich odpowiednie działy. Każdemu pracownikowi jest przypisany numerowi, które są następnie używane do dopasowania odpowiedniego działu do odpowiedniego pracownika, oto pełny kod dla niego:

za pomocą systemu;
za pomocą systemu.Kolekcje.Ogólny;
za pomocą systemu.Linq;
Przestrzeń nazw YourNamespace

Program klasowy

Statyczne pustka główna (String [] args)

Lista pracownicy = nowa lista

NOWOŚĆ Pracownicza id = 1, name = "Sam", DisterctId = 1,
NOWOŚĆ Pracownicza id = 2, name = "jhon", DisterctId = 2,
Nowy pracownik id = 3, name = "Kevin", DisterctId = 2,
NOWOŚĆ Pracownicza id = 4, name = "Bob", DisterctId = 3
;
Lista działy = nowa lista

nowy dział id = 1, name = "pisanie treści",
nowy dział id = 2, name = "marketing",
nowy dział id = 3, name = "inżynieria"
;
var Query = z AuctioneName w pracownikach
Dołącz do działu w departamentach
na nazwie pracowników.DepartmentId równa się działowi.ID do grupy działowej
z działu w grupie działowej.DefaultifEmpty ()
Wybierz nowy AuctioneNameName = AuctioneName.Nazwa, nazwa działu = dział?.Nazwa ?? "Nic" ;
Foreach (var wynik w zapytaniu)

Konsola.WriteLine ($ "AuctionEename: wynik.AuctioneNameName, dział: wynik.Nazwa oddziału");



klasa pracują

public int id get; ustawić;
public String Nazwa get; ustawić;
public int DepartmentId get; ustawić;

Dział klas

public int id get; ustawić;
public String Nazwa get; ustawić;

Najpierw podano przykładowe dane, które zawierają nazwę pracownika i nazwę działów, a następnie odpowiedni numer. Następnie operacja łączenia jest wykonywana za pomocą polecenia łączenia, a następnie wynik jest zapisywany w zmiennej o nazwie zapytanie, następne pętla dla drukowania nazwisk i działów odpowiednich pracowników, a wyjście kodu będą takie :

Wniosek

Lewe zewnętrzne połączenie jest powszechną operacją w SQL, a także można go łatwo wykonać za pomocą LINQ w C#. Za pomocą metod GroupJoin () i SelectMany () możesz wykonać lewe zewnętrzne połączenia w dwóch sekwencjach opartych na wspólnym kluczu. Chociaż składnia do wykonywania lewych zewnętrznych połączeń w LINQ może być trudna do zrozumienia dla początkujących, jest to potężny i elastyczny język, który pozwala łatwo wykonywać złożone zapytania.