Bal külső illesztések végrehajtása – LINQ C# nyelven

Bal Kulso Illesztesek Vegrehajtasa Linq C Nyelven



A bal oldali tábla és a jobb oldali tábla egyező rekordjainak megjelenítéséhez SQL-ben a bal oldali külső összekapcsolás egyfajta összekapcsolási művelet, amelyet használnak. A LINQ-ban a bal oldali külső összekapcsolás végrehajtható a GroupJoin() és SelectMany() metódusokkal, ez a cikk részletesen tárgyalja a bal külső összekapcsolások végrehajtását a LINQ-ban C# használatával.

Bal külső illesztések végrehajtása a LINQ-ban a C# használatával

A LINQ-ban bal oldali külső összekapcsolás végrehajtásához használhatja a GroupJoin() metódust két szekvencia egy közös kulcs alapján történő összekapcsolására, majd a SelectMany() metódussal az eredmény egyengetésére, íme egy példa:







Rendszer használata;
a System.Linq;

osztály Programja
{
statikus üresség Fő ( )
{
var left = új [ ] { 1 , 2 , 3 } ;
var right = új [ ] { 2 , 3 , 4 } ;
var result = left.GroupJoin (
jobb,
l = > l,
r = > r,
( l, r ) = > új { Bal = l, Jobb = r.DefaultIfEmpty ( ) } )
.Sok kiválasztása (
lr = > lr.Right.Select (
r = > új { Bal = lr. Bal, Jobb = r } ) ) ;
az egyes ( var tétel ban ben eredmény )
{
Console.WriteLine ( '{0} {1}' , item.Bal, item.Right ) ;
}
}
}



Ez a kód bal oldali külső összekapcsolást hajt végre két bal és jobb oldali tömbön, és kinyomtatja az eredményt a konzolra. A GroupJoin() metódus végrehajtja az összekapcsolást, és a SelectMany() módszert használják az eredmény egyenlítésére. Végül az eredmény kinyomtatásra kerül a konzolra egy foreach ciklus és a WriteLine() függvény segítségével:







Íme egy másik példa, amely bemutatja a kihagyott csatlakozások végrehajtását a megfelelő alkalmazottak nevének és részlegeinek megjelenítésével. Minden egyes részleghez hozzárendeltek egy számot, amelyek segítségével az adott részleget az adott alkalmazotthoz illesztik, itt a teljes kód:

Rendszer használata;
a System.Collections.Generic használatával;
a System.Linq;

névtér YourNamespace
{
osztály Programja
{
statikus üres Fő ( húr [ ] args )
{
Lista < Alkalmazott Neve > alkalmazottak = új lista < Alkalmazott Neve >
{
új Alkalmazottnév { Id = 1 , Név = 'Saját maga' , Osztályazonosító = 1 } ,
új Alkalmazottnév { Id = 2 , Név = 'János' , Osztályazonosító = 2 } ,
új Alkalmazottnév { Id = 3 , Név = 'Kevin' , Osztályazonosító = 2 } ,
új Alkalmazottnév { Id = 4 , Név = 'Bob' , Osztályazonosító = 3 }
} ;

Lista < Osztály > osztályok = új lista < Osztály >
{
új osztály { Id = 1 , Név = 'Tartalomírás' } ,
új osztály { Id = 2 , Név = 'Marketing' } ,
új osztály { Id = 3 , Név = 'Mérnöki' }
} ;

var query = from alkalmazott neve ban ben alkalmazottak
csatlakozik osztály ban ben osztályok
az alkalmazott neve.RészlegId egyenlő részleg.Id osztálycsoportba
osztálytól ban ben DepartmentGroup.DefaultIfEmpty ( )
válassza ki új { EmployeennameName = alkalmazottnév.Név, OsztályNév = osztály?.Név ?? 'Egyik sem' } ;

az egyes ( volt az eredmény ban ben lekérdezés )
{
Console.WriteLine ( $ 'Alkalmazottnév: {eredmény.Munkavállalónév}, Részleg: {result.DepartmentName}' ) ;
}
}
}

osztály Alkalmazotti név
{
nyilvános int Id { kap; készlet ; }
nyilvános karakterlánc Név { kap; készlet ; }
nyilvános int OsztályId { kap; készlet ; }
}

osztály Tanszék
{
nyilvános int Id { kap; készlet ; }
nyilvános karakterlánc Név { kap; készlet ; }
}
}



Először egy mintaadatot adunk meg, amely tartalmazza az alkalmazottak nevét és az osztályok nevét, majd mindegyikhez egy megfelelő számot adunk. Ezután a join műveletet a join paranccsal hajtjuk végre, majd az eredményt egy változó nevű lekérdezésbe mentjük, majd a for ciklussal kinyomtatjuk az adott alkalmazottak nevét és osztályait, és a kód kimenete így lesz :

Következtetés

A bal külső összekapcsolás egy gyakori művelet az SQL-ben, és könnyen végrehajtható a LINQ használatával C#-ban. A GroupJoin() és SelectMany() metódusok használatával egy közös kulcson alapuló bal külső összekapcsolást végezhet két sorozaton. Bár a LINQ-ban a bal oldali külső illesztések végrehajtásának szintaxisa nehezen érthető a kezdők számára, ez egy hatékony és rugalmas nyelv, amely lehetővé teszi az összetett lekérdezések egyszerű végrehajtását.