C# LINQ Lambda kifejezések

C Linq Lambda Kifejezesek



A lambda kifejezés a C#-ban közvetlenül veszi a kifejezéseket/feltételes utasításokat név nélkül törzsként. Meg kell adnunk a paramétereket, majd a kifejezések hozzá vannak rendelve. A nyelvi integrált lekérdezés (LINQ) használata során előfordulhat, hogy az adatforrásban lévő adatokat átalakítani kell, vagy az egyik adatforrást egy másik adatforrássá kell konvertálnia. Ebben az útmutatóban látni fogjuk, hogyan szűrheti ki a rekordokat az adatforrásból a lambda-kifejezés megadásával, és válassza ki a rekordokat az adatforrásból.

Szintaxis:

  1. Lambda kifejezés: (paraméterek) => kifejezés
  2. Lambda nyilatkozat: { feltételes utasítás1 utasítás2 … }

1. példa:

Hozzon létre egy „műtrágya” listát, amely öt karakterláncot tartalmaz. Használja a lambda kifejezést, amely visszaadja az összes karakterláncot a listából.

segítségével Rendszer ;
segítségével System.Linq ;
segítségével System.Collections.Generic ;

osztály LambdaExpressionExample {

statikus nyilvános üres ( )
{

// Műtrágyák listájának létrehozása
Sorolja fel a műtrágyákat = új Lista ( ) ;
műtrágyák . Hozzáadás ( 'Karbamid' ) ;
műtrágyák . Hozzáadás ( 'nitrogén' ) ;
műtrágyák . Hozzáadás ( 'kálium' ) ;
műtrágyák . Hozzáadás ( 'Diammónium-foszfát' ) ;
műtrágyák . Hozzáadás ( 'foszfor' ) ;

// A LambdaExpression segítségével válassza ki az összes műtrágyát
volt eredmény = műtrágyák . Válassza ki ( inp1 => inp1 ) ;
az egyes ( volt én ban ben eredmény )
{
Konzol . WriteLine ( én ) ;
}

}
}

Kimenet:









Magyarázat:



1. Hozzon létre egy listát a „műtrágyák” nevű karakterlánctípusról. Adjon hozzá öt karakterláncot ehhez a listához.

2. Használja a lambda kifejezést az összes műtrágya kiválasztásához. Itt a kifejezés a „Select” operátorral használatos. A kifejezés az inp1 => inp1. Ezután a „foreach” ciklust használjuk a lambda kifejezés által visszaadott karakterláncok megjelenítésére.





2. példa:

Használja a lambda kifejezést a „foszfátot” tartalmazó műtrágyák kiválasztásához.

segítségével Rendszer ;
segítségével System.Linq ;
segítségével System.Collections.Generic ;

osztály LambdaExpressionExample {

statikus nyilvános üres ( )
{

// Műtrágyák listájának létrehozása
Sorolja fel a műtrágyákat = új Lista ( ) ;
műtrágyák . Hozzáadás ( 'Karbamid' ) ;
műtrágyák . Hozzáadás ( 'nitrogén' ) ;
műtrágyák . Hozzáadás ( 'orto - foszfát' ) ;
műtrágyák . Hozzáadás ( 'Diammónium-foszfát' ) ;
műtrágyák . Hozzáadás ( 'foszfor' ) ;

// A LambdaExpression segítségével válassza ki azokat a műtrágyákat, amelyek a következőket tartalmazzák: „Phosphate”
volt eredmény = műtrágyák . Ahol ( inp1 => inp1 . Tartalmaz ( 'Foszfát' ) ) ;
az egyes ( volt én ban ben eredmény )
{
Konzol . WriteLine ( én ) ;
}

}
}

Kimenet:



Két olyan karakterlánc van, amelyekben a „foszfát” szerepel.

Magyarázat:

1. Hozzon létre egy listát a „műtrágyák” nevű karakterlánctípusokról. Adjon hozzá öt karakterláncot ehhez a listához.

2. Itt a kifejezést a „Hol” operátorral használjuk. A kifejezés az inp1 => inp1.Contains(“foszfát”). Ezután a „foreach” ciklust használjuk a lambda kifejezés által visszaadott karakterláncok megjelenítésére.

3. példa:

Legyen egy lista (order_quantity), amely három rendelést tartalmaz. Adja meg a lambda-kifejezést, hogy minden rendeléshez 5-öt adjon.

segítségével Rendszer ;
segítségével System.Linq ;
segítségével System.Collections.Generic ;

osztály LambdaExpressionExample {

statikus nyilvános üres ( )
{

// Mennyiségi lista létrehozása
Sorolja fel a rendelési_mennyiséget = új Lista ( ) ;
Vásárlás Mennyiség . Hozzáadás ( 5 ) ;
Vásárlás Mennyiség . Hozzáadás ( 7 ) ;
Vásárlás Mennyiség . Hozzáadás ( 8 ) ;

// Használja a LambdaExpressiont 5-re minden rendelésnél.
volt eredmény = Vásárlás Mennyiség . Válassza ki ( inp1 => inp1 + 5 ) ;
az egyes ( volt én ban ben eredmény )
{
Konzol . WriteLine ( én ) ;
}

}
}

Kimenet:

Az [5,7,8] lista átalakul [10,12,13]-ra.

Magyarázat:

1. Készítse el az Integer típusú mennyiségek listáját.

2. Először kiválasztjuk a rendeléseket, majd minden rendeléshez hozzáadunk 5-öt. Tehát a „Select” operátor használatos. A kifejezés az inp1 => inp1 + 5.

4. példa:

Hozzon létre egy Esemény típusú listaadatforrást (három attribútummal – Esemény_neve, Esemény_Állapota és Esemény_költségkerete), és adja vissza a rekordokat 5000-nél nagyobb Event_Budget értékkel.

segítségével Rendszer ;
segítségével System.Linq ;
segítségével System.Collections.Generic ;

// Hozzon létre egy osztályt 'Event_Source' néven 5 eseménnyel.
nyilvános osztály Esemény_forrás
{
nyilvános statikus üres ( )
{
// Eseménylista
IList események = új Lista ( ) {
új Esemény ( ) { Esemény neve = 'Technikai tábor' ,Esemény_állapota = 'Tervezett' ,Esemény_költségvetés = 10000 } ,
új Esemény ( ) { Esemény neve = 'Marketing tábor' ,Esemény_állapota = 'Befejezve' ,Esemény_költségvetés = 5000 } ,
új Esemény ( ) { Esemény neve = 'Egyéb' ,Esemény_állapota = 'Tervezett' ,Esemény_költségvetés = 1000 } ,
új Esemény ( ) { Esemény neve = 'Politika' ,Esemény_állapota = 'Tervezett' ,Esemény_költségvetés = 13000 } ,
új Esemény ( ) { Esemény neve = 'Pénzügy' ,Esemény_állapota = 'Befejezve' ,Esemény_költségvetés = 20000 } ,
} ;

//Esemény_költségkeret nagyobb, mint 5000.
volt eredmény = eseményeket . Ahol ( inp1 => inp1 . Event_Budget > 5000 ) ;
az egyes ( volt én ban ben eredmény ) {
Konzol . WriteLine ( 'NAME: ' + én . Esemény neve + 'ÁLLAPOT: ' + én . Event_Status + ' KÖLTSÉGVETÉS: ' + én . Event_Budget ) ;
}
}
}

nyilvános osztály Esemény {
nyilvános húr Esemény neve { kap ; készlet ; }
nyilvános húr Event_Status { kap ; készlet ; }
nyilvános int Event_Budget { kap ; készlet ; }
}

Kimenet:

Három olyan rekord található az „események” listában, amelyeknek az Event_Budget értéke meghaladja az 5000-et.

Magyarázat:

1. Először létrehozunk egy „Esemény” osztályt három attribútummal.

2. Ezután létrehozunk egy listát öt eseményből.

3. A inp1 => inp1.Esemény_költségvetés > 5000 lambda kifejezés, kiválasztjuk azokat a rekordokat, amelyeknek az Event_Budget értéke nagyobb, mint 5000.

5. példa:

Használja az előző kódot, és változtassa meg a lambda kifejezést. Adja vissza az eseményeket a „Camp”-ra végződő Event_Name-vel és az Event_Status-val, amely „Tervezett”.

//Lambda kifejezés – Az esemény_neve „Camp”-ra végződik, az esemény állapota pedig „Tervezett”.
volt eredmény = eseményeket . Ahol ( inp1 => inp1 . Esemény neve . Végződik ( 'Tábor' ) && inp1 . Event_Status == 'Tervezett' ) ;
az egyes ( volt én ban ben eredmény ) {
Konzol . WriteLine ( 'NAME: ' + én . Esemény neve + 'ÁLLAPOT: ' + én . Event_Status + ' KÖLTSÉGVETÉS: ' + én . Event_Budget ) ;
}

Kimenet:

Csak egy rekord van, amely mindkét feltételnek eleget tesz.

Magyarázat:

Itt két feltételt adunk meg a lambda kifejezésben. Az && (és) operátor a két feltétel igaz értékűvé tételére szolgál. Az első feltétel az EndsWith() metódust használja annak ellenőrzésére, hogy egy karakterlánc az adott karakterláncra végződik-e. A második feltétel az „Összehasonlítás” operátort (==) használja annak ellenőrzésére, hogy mindkét érték egyenlő-e vagy sem.

Következtetés

A C#-ban a lambda kifejezés a kifejezéseket/feltételes utasításokat név nélkül veszi testének. Meg kell adnunk a paramétereket. Ezután a kifejezések hozzá vannak rendelve. Alapvetően ezekkel lehet kiszűrni a rekordokat az adott adatforrásból, átalakítani az elemeket, és kiválasztani az elemeket az adatforrásból/sorozatból. Ebben az útmutatóban azt az öt különböző példát tárgyaltuk, amelyek a lambda-kifejezés használatával jelölik ki, szűrik és átalakítják az elemeket.