Paano Magsagawa ng Left Outer Joins – LINQ sa C#

Paano Magsagawa Ng Left Outer Joins Linq Sa C



Upang ipakita ang pagtutugma ng mga tala mula sa kaliwang talahanayan at kanang talahanayan sa SQL ang kaliwang panlabas na pagsasama ay isang uri ng operasyon ng pagsali na ginagamit. Sa LINQ, maaaring isagawa ang left outer join gamit ang GroupJoin() at SelectMany() na mga pamamaraan, malawakang tatalakayin ng artikulong ito ang pagsasagawa ng left outer joins sa LINQ gamit ang C#.

Paano Magsagawa ng Left Outer Joins sa LINQ Gamit ang C#

Upang magsagawa ng kaliwang panlabas na pagsali sa LINQ, maaari mong gamitin ang GroupJoin() na paraan upang pagsamahin ang dalawang sequence batay sa isang karaniwang key at pagkatapos ay gamitin ang SelectMany() na paraan upang patagin ang resulta, narito ang isang halimbawa:







gamit ang System;
gamit ang System.Linq;

Programa ng klase
{
static void Main ( )
{
var left = bago [ ] { 1 , 2 , 3 } ;
var right = bago [ ] { 2 , 3 , 4 } ;
var result = left.GroupJoin (
tama,
l = > l,
r = > r,
( l, r ) = > bago { Kaliwa = l, Kanan = r.DefaultIfEmpty ( ) } )
.SelectMany (
lr = > lr.Right.Piliin (
r = > bago { Kaliwa = lr. Kaliwa, Kanan = r } ) ) ;
foreach ( var item sa resulta )
{
Console.WriteLine ( '{0} {1}' , item. Kaliwa, item. Kanan ) ;
}
}
}



Nagsasagawa ang code na ito ng kaliwang panlabas na pagsali sa dalawang array kaliwa at kanan, at ini-print ang resulta sa console. Ang GroupJoin() na paraan ay gumaganap ng pagsali, at ang SelectMany() paraan ay ginagamit upang patagin ang resulta. Sa wakas, ang resulta ay naka-print sa console gamit ang foreach loop at WriteLine() function:







Narito ang isa pang halimbawa na nagpapakita ng paggamit ng pagsasagawa ng mga naiwang pagsali sa pamamagitan ng pagpapakita ng kani-kanilang mga pangalan ng empleyado at kanilang mga nauugnay na departamento. Ang bawat empleyado ay ang bawat departamento ay nabigyan ng numero na pagkatapos ay gagamitin upang itugma ang nauugnay na departamento sa kani-kanilang empleyado, narito ang kumpletong code para dito:

gamit ang System;
gamit ang System.Collections.Generic;
gamit ang System.Linq;

namespace YourNamespace
{
Programa ng klase
{
static void Main ( string [ ] args )
{
Listahan < Pangalan ng empleyado > empleyado = bagong Listahan < Pangalan ng empleyado >
{
bagong Employeename { Id = 1 , Pangalan = 'Siya mismo' , DepartmentId = 1 } ,
bagong Employeename { Id = 2 , Pangalan = 'John' , DepartmentId = 2 } ,
bagong Employeename { Id = 3 , Pangalan = 'Kevin' , DepartmentId = 2 } ,
bagong Employeename { Id = 4 , Pangalan = 'Bob' , DepartmentId = 3 }
} ;

Listahan < Kagawaran > mga departamento = bagong Listahan < Kagawaran >
{
bagong Departamento { Id = 1 , Pangalan = 'Pagsusulat ng Nilalaman' } ,
bagong Departamento { Id = 2 , Pangalan = 'Marketing' } ,
bagong Departamento { Id = 3 , Pangalan = 'Engineering' }
} ;

var query = mula sa employeename sa mga empleyado
sumali departamento sa mga kagawaran
sa employeename.DepartmentId equals department.Id into departmentGroup
mula sa departamento sa departmentGroup.DefaultIfEmpty ( )
pumili bago { EmployeenameName = employeename.Name, DepartmentName = department?.Name ?? 'Wala' } ;

foreach ( ang naging resulta sa tanong )
{
Console.WriteLine ( $ 'Employeename: {result.EmployeenameName}, Department: {result.DepartmentName}' ) ;
}
}
}

klase Pangalan ng Empleyado
{
pampublikong int Id { makakuha; itakda ; }
Pangalan ng pampublikong string { makakuha; itakda ; }
pampublikong int DepartmentId { makakuha; itakda ; }
}

Departamento ng klase
{
pampublikong int Id { makakuha; itakda ; }
Pangalan ng pampublikong string { makakuha; itakda ; }
}
}



Una ang isang sample na data ay ibinigay na naglalaman ng pangalan ng empleyado at ang pangalan ng mga departamento at pagkatapos ay isang kaukulang numero ay ibinigay sa bawat isa. Susunod na ang operasyon ng pagsali ay isinasagawa sa pamamagitan ng paggamit ng utos ng pagsali at pagkatapos na ang resulta ay nai-save sa isang variable na pinangalanang query, susunod ang para sa loop ay ginagamit upang i-print ang mga pangalan at departamento ng kani-kanilang mga empleyado at ang output ng code ay magiging ganito :

Konklusyon

Ang kaliwang panlabas na pagsali ay isang karaniwang operasyon sa SQL, at madali ring maisagawa gamit ang LINQ sa C#. Gamit ang mga pamamaraan ng GroupJoin() at SelectMany(), maaari kang magsagawa ng left outer joins sa dalawang sequence batay sa isang karaniwang key. Bagama't ang syntax para sa pagsasagawa ng left outer joins sa LINQ ay maaaring mahirap maunawaan para sa mga nagsisimula, ito ay isang malakas at nababaluktot na wika na nagbibigay-daan para sa mga kumplikadong query na madaling maisagawa.