Jak wykonać lewe sprzężenia zewnętrzne – LINQ w C#

Jak Wykonac Lewe Sprzezenia Zewnetrzne Linq W C



Aby wyświetlić pasujące rekordy z lewej i prawej tabeli w SQL, lewe sprzężenie zewnętrzne jest typem operacji łączenia, która jest używana. W LINQ lewe sprzężenie zewnętrzne można wykonać przy użyciu metod GroupJoin() i SelectMany(). W tym artykule szczegółowo omówiono wykonywanie lewych sprzężeń zewnętrznych w LINQ przy użyciu języka C#.

Jak wykonać lewe sprzężenia zewnętrzne w LINQ przy użyciu C#

Aby wykonać lewe sprzężenie zewnętrzne w LINQ, możesz użyć metody GroupJoin() do połączenia dwóch sekwencji w oparciu o wspólny klucz, a następnie użyć metody SelectMany() do spłaszczenia wyniku, oto przykład:







przy użyciu Systemu;
przy użyciu System.Linq;

Program klasowy
{
statyczna pustka Główny ( )
{
var pozostawiony = nowy [ ] { 1 , 2 , 3 } ;
var prawo = nowy [ ] { 2 , 3 , 4 } ;
var wynik = left.GroupJoin (
Prawidłowy,
l = > ja,
r = > R,
( l, r ) = > nowy { Lewo = l, Prawo = r.DefaultIfEmpty ( ) } )
.Wybierz Wiele (
lr = > lr.W prawo.Wybierz (
r = > nowy { Lewo = lr.Lewo, Prawo = r } ) ) ;
dla każdego ( zmienna pozycja W wynik )
{
Console.WriteLine ( '{0} {1}' , pozycja.Lewo, pozycja.Prawo ) ;
}
}
}



Ten kod wykonuje lewe sprzężenie zewnętrzne na dwóch tablicach po lewej i prawej stronie i wyświetla wynik w konsoli. Metoda GroupJoin() wykonuje łączenie, a metoda Wybierz Wiele() Metoda służy do spłaszczania wyniku. Na koniec wynik jest drukowany na konsoli za pomocą pętli foreach i funkcji WriteLine():







Oto kolejny przykład demonstrujący zastosowanie pominiętych połączeń poprzez wyświetlenie nazwisk odpowiednich pracowników i odpowiednich działów. Każdemu pracownikowi, każdemu działowi przypisano numer, który jest następnie używany do dopasowania odpowiedniego działu do odpowiedniego pracownika, oto jego pełny kod:

przy użyciu Systemu;
przy użyciu System.Collections.Generic;
przy użyciu System.Linq;

przestrzeń nazw Twoja przestrzeń nazw
{
Program klasowy
{
statyczna pustka Główny ( strunowy [ ] argumenty )
{
Lista < Imię i nazwisko pracownika > pracownicy = nowa lista < Imię i nazwisko pracownika >
{
nowe imię i nazwisko pracownika { identyfikator = 1 , Imię = 'Samego siebie' , Identyfikator działu = 1 } ,
nowe imię i nazwisko pracownika { identyfikator = 2 , Imię = 'Jan' , Identyfikator działu = 2 } ,
nowe imię i nazwisko pracownika { identyfikator = 3 , Imię = 'Kevin' , Identyfikator działu = 2 } ,
nowe imię i nazwisko pracownika { identyfikator = 4 , Imię = 'Pion' , Identyfikator działu = 3 }
} ;

Lista < Dział > działy = nowa lista < Dział >
{
nowy dział { identyfikator = 1 , Imię = 'Pisanie treści' } ,
nowy dział { identyfikator = 2 , Imię = „Marketing” } ,
nowy dział { identyfikator = 3 , Imię = 'Inżynieria' }
} ;

var zapytanie = od nazwa_pracownika W pracownicy
dołączyć dział W działy
na nazwa_pracownika.DepartmentId równa się dział.Id w dzialeGroup
z działu W DepartmentGroup.DefaultIfEmpty ( )
wybierać nowy { Nazwa_pracownika = nazwa_pracownika.Nazwa, Nazwa_działu = dział?.Nazwa ?? 'Nic' } ;

dla każdego ( był rezultatem W zapytanie )
{
Console.WriteLine ( $ „Nazwa pracownika: {result.EmployeenameName}, Dział: {result.DepartmentName}” ) ;
}
}
}

klasa Nazwa pracownika
{
publiczny identyfikator int { Dostawać; ustawić ; }
ciąg publiczny Nazwa { Dostawać; ustawić ; }
publiczny int Identyfikator wydziału { Dostawać; ustawić ; }
}

dział klasy
{
publiczny identyfikator int { Dostawać; ustawić ; }
ciąg publiczny Nazwa { Dostawać; ustawić ; }
}
}



Najpierw podaje się przykładowe dane, które zawierają imię i nazwisko pracownika oraz nazwy działów, a następnie każdemu z nich nadawany jest odpowiedni numer. Następnie wykonywana jest operacja join za pomocą komendy join, a następnie wynik jest zapisywany w zmiennej o nazwie query, następnie używana jest pętla for do wypisania nazwisk i działów odpowiednich pracowników, a wynik kodu będzie wyglądał następująco :

Wniosek

Lewe sprzężenie zewnętrzne jest typową operacją w SQL i można ją również łatwo wykonać przy użyciu LINQ w języku C#. Za pomocą metod GroupJoin() i SelectMany() można wykonywać lewe sprzężenia zewnętrzne na dwóch sekwencjach opartych na wspólnym kluczu. Chociaż składnia wykonywania lewych sprzężeń zewnętrznych w LINQ może być trudna do zrozumienia dla początkujących, jest to potężny i elastyczny język, który umożliwia łatwe wykonywanie złożonych zapytań.