Sintaksa:
- Lambda izraz: (parametri) => izraz
- Lambda izjava: { pogojni stavek1 stavek2 … }
Primer 1:
Ustvarite seznam 'gnojil', ki vsebuje pet nizov. Uporabite lambda izraz, ki vrne vse nize s seznama.
uporabo Sistem ;uporabo System.Linq ;
uporabo System.Collections.Generic ;
razred LambdaExpressionExample {
statična javnosti praznina Glavni ( )
{
// Ustvari seznam gnojil
Seznam gnojil = novo Seznam ( ) ;
gnojila . Dodaj ( 'sečnina' ) ;
gnojila . Dodaj ( 'dušik' ) ;
gnojila . Dodaj ( 'kalij' ) ;
gnojila . Dodaj ( 'Di-amonijev fosfat' ) ;
gnojila . Dodaj ( 'fosfor' ) ;
// Uporabite LambdaExpression za izbiro vseh gnojil
je bil rezultat = gnojila . Izberite ( inp1 => inp1 ) ;
za vsakogar ( je bil jaz v rezultat )
{
Konzola . WriteLine ( jaz ) ;
}
}
}
Izhod:
Pojasnilo:
1. Ustvarite seznam vrste nizov z imenom 'gnojila'. Na ta seznam dodajte pet nizov.
2. Uporabite lambda izraz za izbiro vseh gnojil. Tukaj se izraz uporablja z operatorjem »Izberi«. Izraz je inp1 => inp1. Nato uporabimo zanko »foreach« za prikaz nizov, ki jih vrne lambda izraz.
Primer 2:
Uporabite lambda izraz za izbiro gnojil, ki vsebujejo 'fosfat'.
uporabo Sistem ;uporabo System.Linq ;
uporabo System.Collections.Generic ;
razred LambdaExpressionExample {
statična javnosti praznina Glavni ( )
{
// Ustvari seznam gnojil
Seznam gnojil = novo Seznam ( ) ;
gnojila . Dodaj ( 'sečnina' ) ;
gnojila . Dodaj ( 'dušik' ) ;
gnojila . Dodaj ( 'orto - fosfat' ) ;
gnojila . Dodaj ( 'Di-amonijev fosfat' ) ;
gnojila . Dodaj ( 'fosfor' ) ;
// Uporabite LambdaExpression za izbiro gnojil, ki vključujejo - 'fosfat'
je bil rezultat = gnojila . Kje ( inp1 => inp1 . Vsebuje ( 'fosfat' ) ) ;
za vsakogar ( je bil jaz v rezultat )
{
Konzola . WriteLine ( jaz ) ;
}
}
}
Izhod:
Obstajata dva niza, ki vsebujeta 'fosfat'.
Pojasnilo:
1. Ustvarite seznam vrste nizov z imenom 'gnojila'. Na ta seznam dodajte pet nizov.
2. Tukaj se izraz uporablja z operatorjem »Where«. Izraz je inp1 => inp1.Contains(“fosfat”). Nato uporabimo zanko »foreach« za prikaz nizov, ki jih vrne lambda izraz.
Primer 3:
Imejmo seznam (order_quantity), ki vsebuje tri naročila. Podajte lambda izraz, da vsakemu naročilu dodate 5.
uporabo Sistem ;uporabo System.Linq ;
uporabo System.Collections.Generic ;
razred LambdaExpressionExample {
statična javnosti praznina Glavni ( )
{
// Ustvari seznam količin
Navedite naročilo_količina = novo Seznam ( ) ;
količina_naročila . Dodaj ( 5 ) ;
količina_naročila . Dodaj ( 7 ) ;
količina_naročila . Dodaj ( 8 ) ;
// Uporabi LambdaExpression za 5 za vsako naročilo.
je bil rezultat = količina_naročila . Izberite ( inp1 => inp1 + 5 ) ;
za vsakogar ( je bil jaz v rezultat )
{
Konzola . WriteLine ( jaz ) ;
}
}
}
Izhod:
Seznam [5,7,8] se spremeni v [10,12,13].
Pojasnilo:
1. Ustvarite seznam količin tipa Integer.
2. Najprej izberemo naročila in nato vsakemu naročilu dodamo 5. Uporabljen je torej operator »Izberi«. Izraz je inp1 => inp1 + 5.
Primer 4:
Ustvarite vir podatkov seznama tipa Event (s tremi atributi – Event_Name, Event_Status in Event_Budget) in vrnite zapise z Event_Budget, ki je večji od 5000.
uporabo Sistem ;uporabo System.Linq ;
uporabo System.Collections.Generic ;
// Ustvarite razred z imenom - 'Event_Source' s 5 dogodki.
javnosti razred Vir_dogodka
{
javnosti statična praznina Glavni ( )
{
// Seznam dogodkov
Seznam dogodkov = novo Seznam ( ) {
novo Dogodek ( ) { Ime_dogodka = 'Tehnični kamp' ,Event_Status = 'Načrtovano' ,Event_Budget = 10000 } ,
novo Dogodek ( ) { Ime_dogodka = 'Marketinški kamp' ,Event_Status = 'Dokončano' ,Event_Budget = 5000 } ,
novo Dogodek ( ) { Ime_dogodka = 'drugo' ,Event_Status = 'Načrtovano' ,Event_Budget = 1000 } ,
novo Dogodek ( ) { Ime_dogodka = 'Politika' ,Event_Status = 'Načrtovano' ,Event_Budget = 13000 } ,
novo Dogodek ( ) { Ime_dogodka = 'Finance' ,Event_Status = 'Dokončano' ,Event_Budget = 20000 } ,
} ;
//Event_Budget večji od 5000.
je bil rezultat = dogodkov . Kje ( inp1 => inp1 . Event_Budget > 5000 ) ;
za vsakogar ( je bil jaz v rezultat ) {
Konzola . WriteLine ( 'IME: ' + jaz . Ime_dogodka + ' STANJE: ' + jaz . Status_dogodka + ' PRORAČUN: ' + jaz . Event_Budget ) ;
}
}
}
javnosti razred Dogodek {
javnosti vrvica Ime_dogodka { dobiti ; set ; }
javnosti vrvica Status_dogodka { dobiti ; set ; }
javnosti int Event_Budget { dobiti ; set ; }
}
Izhod:
Na seznamu »dogodkov« so trije zapisi, katerih Event_Budget je večji od 5000.
Pojasnilo:
1. Najprej ustvarimo razred »Event« s tremi atributi.
2. Nato ustvarimo seznam petih dogodkov.
3. Uporaba inp1 => inp1.Event_Budget > 5000 lambda izraz, izberemo zapise z Event_Budget večjim od 5000.
Primer 5:
Uporabite prejšnjo kodo in spremenite lambda izraz. Vrnite dogodke z Event_Name, ki se konča z 'Camp' in s Event_Status, ki je 'Planned'.
//Lambda izraz - Ime_dogodka se konča s 'Tabor' in Status_dogodka je 'Planirano'.je bil rezultat = dogodkov . Kje ( inp1 => inp1 . Ime_dogodka . Konča z ( 'tabor' ) && inp1 . Status_dogodka == 'Načrtovano' ) ;
za vsakogar ( je bil jaz v rezultat ) {
Konzola . WriteLine ( 'IME: ' + jaz . Ime_dogodka + ' STANJE: ' + jaz . Status_dogodka + ' PRORAČUN: ' + jaz . Event_Budget ) ;
}
Izhod:
Obstaja le en zapis, ki izpolnjuje oba pogoja.
Pojasnilo:
Tukaj podajamo dva pogoja v lambda izrazu. Operator && (in) se uporablja, da oba pogoja postaneta True. Prvi pogoj uporablja metodo EndsWith(), da preveri, ali se niz konča z danim nizom. Drugi pogoj uporablja operator »Primerjava« (==), da preveri, ali sta obe vrednosti enaki ali ne.
Zaključek
V C# izraz lambda sprejme izraze/pogojne stavke kot svoje telo brez imena. Določiti moramo parametre. Nato so mu dodeljeni izrazi. V bistvu se uporabljajo za filtriranje zapisov iz danega vira podatkov, preoblikovanje elementov in izbiro elementov iz vira podatkov/zaporedja. V tem priročniku smo razpravljali o petih različnih primerih, ki izbirajo, filtrirajo in preoblikujejo elemente z uporabo lambda izraza.