C# LINQ Lambda izrazi

C Linq Lambda Izrazi



Lambda izraz u C# izravno uzima izraze/uvjetne naredbe kao svoje tijelo bez naziva. Moramo specificirati parametre, a zatim mu se dodjeljuju izrazi. Dok radite s jezičnim integriranim upitom (LINQ), možda ćete morati transformirati podatke koji su prisutni u izvoru podataka ili pretvoriti jedan izvor podataka u drugi izvor podataka. U ovom vodiču vidjet ćemo kako filtrirati zapise iz izvora podataka određivanjem lambda izraza i odabirom zapisa iz izvora podataka.

Sintaksa:

  1. Lambda izraz: (parametri) => izraz
  2. Lambda izjava: { uvjetna izjava1 izjava2 … }

Primjer 1:

Napravite popis 'gnojiva' koji sadrži pet nizova. Upotrijebite lambda izraz koji vraća sve nizove s popisa.

korištenjem Sustav ;
korištenjem System.Linq ;
korištenjem Sustav.Zbirke.Generički ;

razreda LambdaExpressionExample {

statički javnost poništiti Glavni ( )
{

// Kreirajte popis gnojiva
Navedite gnojiva = novi Popis ( ) ;
gnojiva . Dodati ( 'urea' ) ;
gnojiva . Dodati ( 'dušik' ) ;
gnojiva . Dodati ( 'kalij' ) ;
gnojiva . Dodati ( 'Di-amonijev fosfat' ) ;
gnojiva . Dodati ( 'fosfor' ) ;

// Koristite LambdaExpression za odabir svih gnojiva
bio je proizlaziti = gnojiva . Izaberi ( inp1 => inp1 ) ;
za svakoga ( bio je ja u proizlaziti )
{
Konzola . WriteLine ( ja ) ;
}

}
}

Izlaz:









Obrazloženje:



1. Napravite popis tipa niza pod nazivom 'gnojiva'. Dodajte pet nizova na ovaj popis.

2. Koristite lambda izraz za odabir svih gnojiva. Ovdje se izraz koristi s operatorom 'Odaberi'. Izraz je inp1 => inp1. Zatim koristimo petlju 'foreach' za prikaz nizova koje vraća lambda izraz.





Primjer 2:

Koristite lambda izraz za odabir gnojiva koja sadrže 'fosfat'.

korištenjem Sustav ;
korištenjem System.Linq ;
korištenjem Sustav.Zbirke.Generički ;

razreda LambdaExpressionExample {

statički javnost poništiti Glavni ( )
{

// Kreirajte popis gnojiva
Navedite gnojiva = novi Popis ( ) ;
gnojiva . Dodati ( 'urea' ) ;
gnojiva . Dodati ( 'dušik' ) ;
gnojiva . Dodati ( 'orto - fosfat' ) ;
gnojiva . Dodati ( 'Di-amonijev fosfat' ) ;
gnojiva . Dodati ( 'fosfor' ) ;

// Koristite LambdaExpression za odabir  gnojiva koja uključuju - 'fosfat'
bio je proizlaziti = gnojiva . Gdje ( inp1 => inp1 . Sadrži ( 'Fosfat' ) ) ;
za svakoga ( bio je ja u proizlaziti )
{
Konzola . WriteLine ( ja ) ;
}

}
}

Izlaz:



Postoje dva niza koji sadrže 'fosfat'.

Obrazloženje:

1. Napravite popis tipa niza pod nazivom 'gnojiva'. Dodajte pet nizova na ovaj popis.

2. Ovdje se izraz koristi s operatorom 'Where'. Izraz je inp1 => inp1.Sadrži (“fosfat”). Zatim koristimo petlju 'foreach' za prikaz nizova koje vraća lambda izraz.

Primjer 3:

Hajdemo imati popis (order_quantity) koji sadrži tri narudžbe. Navedite lambda izraz da dodate 5 svakoj narudžbi.

korištenjem Sustav ;
korištenjem System.Linq ;
korištenjem Sustav.Zbirke.Generički ;

razreda LambdaExpressionExample {

statički javnost poništiti Glavni ( )
{

// Kreiraj popis količina
Popis narudžbe_količina = novi Popis ( ) ;
količina_narudžbe . Dodati ( 5 ) ;
količina_narudžbe . Dodati ( 7 ) ;
količina_narudžbe . Dodati ( 8 ) ;

// Koristite LambdaExpression do 5 za svaku narudžbu.
bio je proizlaziti = količina_narudžbe . Izaberi ( inp1 => inp1 + 5 ) ;
za svakoga ( bio je ja u proizlaziti )
{
Konzola . WriteLine ( ja ) ;
}

}
}

Izlaz:

Lista [5,7,8] se transformira u [10,12,13].

Obrazloženje:

1. Kreirajte popis količina tipa Integer.

2. Prvo odabiremo naloge, a zatim dodajemo 5 svakoj narudžbi. Dakle, koristi se operator “Select”. Izraz je inp1 => inp1 + 5.

Primjer 4:

Stvorite izvor podataka popisa tipa Event (s tri atributa – Event_Name, Event_Status i Event_Budget) i vratite zapise s Event_Budgetom koji je veći od 5000.

korištenjem Sustav ;
korištenjem System.Linq ;
korištenjem Sustav.Zbirke.Generički ;

// Kreirajte klasu pod nazivom - 'Event_Source' s 5 događaja.
javnost razreda Izvor_događaja
{
javnost statički poništiti Glavni ( )
{
// Popis događaja
Popis događaja = novi Popis ( ) {
novi Događaj ( ) { Naziv_događaja = 'Tehnički kamp' ,Event_Status = 'Planirani' ,Proračun_događaja = 10000 } ,
novi Događaj ( ) { Naziv_događaja = 'Marketinški kamp' ,Event_Status = 'Dovršeno' ,Proračun_događaja = 5000 } ,
novi Događaj ( ) { Naziv_događaja = 'Ostalo' ,Event_Status = 'Planirani' ,Proračun_događaja = 1000 } ,
novi Događaj ( ) { Naziv_događaja = 'Politika' ,Event_Status = 'Planirani' ,Proračun_događaja = 13000 } ,
novi Događaj ( ) { Naziv_događaja = 'Financije' ,Event_Status = 'Dovršeno' ,Proračun_događaja = 20000 } ,
} ;

//Event_Budget veći od 5000.
bio je proizlaziti = događanja . Gdje ( inp1 => inp1 . Proračun_događaja > 5000 ) ;
za svakoga ( bio je ja u proizlaziti ) {
Konzola . WriteLine ( 'IME: ' + ja . Naziv_događaja + ' STATUS: ' + ja . Status_događaja + ' PRORAČUN: ' + ja . Proračun_događaja ) ;
}
}
}

javnost razreda Događaj {
javnost niz Naziv_događaja { dobiti ; postaviti ; }
javnost niz Status_događaja { dobiti ; postaviti ; }
javnost int Proračun_događaja { dobiti ; postaviti ; }
}

Izlaz:

Postoje tri zapisa na popisu 'događaja' s Event_Budget većim od 5000.

Obrazloženje:

1. Prvo stvaramo klasu 'Događaj' s tri atributa.

2. Zatim stvaramo popis od pet događaja.

3. Korištenje inp1 => inp1.Event_Budget > 5000 lambda izraz, odabiremo zapise s Event_Budget većim od 5000.

Primjer 5:

Iskoristite prethodni kod i promijenite lambda izraz. Vratite događaje s Event_Name koji završava s 'Camp' i sa Event_Statusom koji je 'Planned'.

//Lambda izraz - Event_Name završava s 'Camp', a Event_Status je 'Planned'.
bio je proizlaziti = događanja . Gdje ( inp1 => inp1 . Naziv_događaja . Završava s ( 'Kamp' ) && inp1 . Status_događaja == 'Planirani' ) ;
za svakoga ( bio je ja u proizlaziti ) {
Konzola . WriteLine ( 'IME: ' + ja . Naziv_događaja + ' STATUS: ' + ja . Status_događaja + ' PRORAČUN: ' + ja . Proračun_događaja ) ;
}

Izlaz:

Postoji samo jedan zapis koji zadovoljava oba uvjeta.

Obrazloženje:

Ovdje specificiramo dva uvjeta u lambda izrazu. Operator && (i) koristi se da dva uvjeta budu istinita. Prvi uvjet koristi metodu EndsWith() za provjeru završava li niz zadanim nizom. Drugi uvjet koristi operator 'Usporedba' (==) za provjeru jesu li obje vrijednosti jednake ili ne.

Zaključak

U C#, lambda izraz uzima izraze/uvjetne naredbe kao svoje tijelo bez imena. Moramo odrediti parametre. Zatim mu se dodjeljuju izrazi. U osnovi, oni se koriste za filtriranje zapisa iz danog izvora podataka, transformaciju elemenata i odabir elemenata iz izvora podataka/slijeda. U ovom vodiču raspravljali smo o pet različitih primjera koji biraju, filtriraju i transformiraju elemente pomoću lambda izraza.