Sintaksa:
- Lambda izraz: (parametri) => izraz
- 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.