C# LINQ Lambda Expressions

C Linq Lambda Expressions



Direktang kinukuha ng Lambda expression sa C# ang mga expression/conditional na pahayag bilang katawan nito nang walang pangalan. Kailangan nating tukuyin ang mga parameter at pagkatapos ay itatalaga ang mga expression dito. Habang nagtatrabaho sa Language Integrated Query (LINQ), maaaring mayroon kang kinakailangan na kailangan mong baguhin ang data na nasa data source o i-convert ang isang data source sa isa pang data source. Sa gabay na ito, makikita natin kung paano i-filter ang mga record mula sa data source sa pamamagitan ng pagtukoy sa lambda expression at piliin ang mga record mula sa data source.

Syntax:

  1. Lambda Expression: (mga parameter) => pagpapahayag
  2. Pahayag ng Lambda: { conditional statement1 statement2 … }

Halimbawa 1:

Lumikha ng listahan ng 'mga pataba' na naglalaman ng limang mga string. Gamitin ang lambda expression na nagbabalik ng lahat ng string mula sa listahan.

gamit Sistema ;
gamit Sistema.Linq ;
gamit System.Collections.Generic ;

klase LambdaExpressionExample {

static pampubliko walang bisa Pangunahing ( )
{

// Lumikha ng Listahan ng mga pataba
Maglista ng mga pataba = bago Listahan ( ) ;
mga pataba . Idagdag ( 'Urea' ) ;
mga pataba . Idagdag ( 'nitrogen' ) ;
mga pataba . Idagdag ( 'potassium' ) ;
mga pataba . Idagdag ( 'Di-ammonium Phosphate' ) ;
mga pataba . Idagdag ( 'posporus' ) ;

// Gamitin ang LambdaExpression upang piliin ang lahat ng mga pataba
ay resulta = mga pataba . Pumili ( inp1 => inp1 ) ;
foreach ( ay i sa resulta )
{
Console . WriteLine ( i ) ;
}

}
}

Output:









Paliwanag:



1. Gumawa ng listahan ng uri ng string na pinangalanang 'mga pataba'. Magdagdag ng limang string sa listahang ito.

2. Gamitin ang lambda expression upang piliin ang lahat ng mga pataba. Dito, ginagamit ang expression sa operator na 'Piliin'. Ang ekspresyon ay inp1 => inp1. Pagkatapos, ginagamit namin ang 'foreach' na loop upang ipakita ang mga string na ibinalik ng lambda expression.





Halimbawa 2:

Gamitin ang lambda expression upang piliin ang mga pataba na may kasamang 'Phosphate'.

gamit Sistema ;
gamit Sistema.Linq ;
gamit System.Collections.Generic ;

klase LambdaExpressionExample {

static pampubliko walang bisa Pangunahing ( )
{

// Lumikha ng Listahan ng mga pataba
Maglista ng mga pataba = bago Listahan ( ) ;
mga pataba . Idagdag ( 'Urea' ) ;
mga pataba . Idagdag ( 'nitrogen' ) ;
mga pataba . Idagdag ( 'ortho - Phosphate' ) ;
mga pataba . Idagdag ( 'Di-ammonium Phosphate' ) ;
mga pataba . Idagdag ( 'posporus' ) ;

// Gamitin ang LambdaExpression para piliin ang  mga pataba na kinabibilangan ng - 'Phosphate'
ay resulta = mga pataba . saan ( inp1 => inp1 . Naglalaman ( 'Phosphate' ) ) ;
foreach ( ay i sa resulta )
{
Console . WriteLine ( i ) ;
}

}
}

Output:



Mayroong dalawang mga string na kasama ang 'Phosphate' sa mga ito.

Paliwanag:

1. Gumawa ng listahan ng uri ng string na pinangalanang 'mga pataba'. Magdagdag ng limang string sa listahang ito.

2. Dito, ginagamit ang expression sa operator na 'Saan'. Ang ekspresyon ay inp1 => inp1.Contains('Phosphate'). Pagkatapos, ginagamit namin ang 'foreach' na loop upang ipakita ang mga string na ibinalik ng lambda expression.

Halimbawa 3:

Magkaroon tayo ng listahan (order_quantity) na mayroong tatlong order. Tukuyin ang lambda expression upang magdagdag ng 5 sa bawat order.

gamit Sistema ;
gamit Sistema.Linq ;
gamit System.Collections.Generic ;

klase LambdaExpressionExample {

static pampubliko walang bisa Pangunahing ( )
{

// Lumikha ng Listahan ng mga dami
Ilista ang order_quantity = bago Listahan ( ) ;
order_quantity . Idagdag ( 5 ) ;
order_quantity . Idagdag ( 7 ) ;
order_quantity . Idagdag ( 8 ) ;

// Gamitin ang LambdaExpression hanggang 5 sa bawat order.
ay resulta = order_quantity . Pumili ( inp1 => inp1 + 5 ) ;
foreach ( ay i sa resulta )
{
Console . WriteLine ( i ) ;
}

}
}

Output:

Ang listahan ng [5,7,8] ay binago sa [10,12,13].

Paliwanag:

1. Lumikha ng listahan ng mga dami ng uri ng Integer.

2. Pinipili muna namin ang mga order at pagkatapos ay magdagdag ng 5 sa bawat order. Kaya, ang 'Piliin' na operator ay ginagamit. Ang ekspresyon ay inp1 => inp1 + 5.

Halimbawa 4:

Gumawa ng listahan ng data source ng uri ng Event (na may tatlong attribute – Event_Name, Event_Status at Event_Budget) at ibalik ang mga record kasama ang Event_Budget na higit sa 5000.

gamit Sistema ;
gamit Sistema.Linq ;
gamit System.Collections.Generic ;

// Lumikha ng klase na pinangalanang - 'Event_Source' na may 5 kaganapan.
pampubliko klase Event_Source
{
pampubliko static walang bisa Pangunahing ( )
{
// Listahan ng Kaganapan
Ilista ang mga kaganapan = bago Listahan ( ) {
bago Kaganapan ( ) { Pangalan ng pangyayari = 'Technical Camp' ,Katayuan_Kaganapan = 'Pinaplano' ,Badyet_Kaganapan = 10000 } ,
bago Kaganapan ( ) { Pangalan ng pangyayari = 'Marketing Camp' ,Katayuan_Kaganapan = 'Nakumpleto' ,Badyet_Kaganapan = 5000 } ,
bago Kaganapan ( ) { Pangalan ng pangyayari = 'Iba pa' ,Katayuan_Kaganapan = 'Pinaplano' ,Badyet_Kaganapan = 1000 } ,
bago Kaganapan ( ) { Pangalan ng pangyayari = 'Pulitika' ,Katayuan_Kaganapan = 'Pinaplano' ,Badyet_Kaganapan = 13000 } ,
bago Kaganapan ( ) { Pangalan ng pangyayari = 'Pananalapi' ,Katayuan_Kaganapan = 'Nakumpleto' ,Badyet_Kaganapan = 20000 } ,
} ;

//Event_Budget na higit sa 5000.
ay resulta = mga pangyayari . saan ( inp1 => inp1 . Event_Budget > 5000 ) ;
foreach ( ay i sa resulta ) {
Console . WriteLine ( 'NAME: ' + i . Pangalan ng pangyayari + ' STATUS: ' + i . Event_Status + 'BUDGET:' + i . Event_Budget ) ;
}
}
}

pampubliko klase Kaganapan {
pampubliko string Pangalan ng pangyayari { makuha ; itakda ; }
pampubliko string Event_Status { makuha ; itakda ; }
pampubliko int Event_Budget { makuha ; itakda ; }
}

Output:

Mayroong tatlong tala sa listahan ng 'mga kaganapan' na may Event_Budget na higit sa 5000.

Paliwanag:

1. Una, gumawa kami ng klase ng 'Kaganapan' na may tatlong katangian.

2. Pagkatapos, gumawa kami ng listahan ng limang kaganapan.

3. Gamit ang inp1 => inp1.Event_Budget > 5000 lambda expression, pinipili namin ang mga talaan na may Event_Budget na higit sa 5000.

Halimbawa 5:

Gamitin ang nakaraang code at baguhin ang lambda expression. Ibalik ang mga kaganapan na may Event_Name na nagtatapos sa 'Camp' at may Event_Status na 'Planned'.

//Lambda Expression - Event_Name ay nagtatapos sa 'Camp' at Event_Status ay 'Planned'.
ay resulta = mga pangyayari . saan ( inp1 => inp1 . Pangalan ng pangyayari . EndsWith ( 'Kampo' ) && inp1 . Event_Status == 'Pinaplano' ) ;
foreach ( ay i sa resulta ) {
Console . WriteLine ( 'NAME: ' + i . Pangalan ng pangyayari + ' STATUS: ' + i . Event_Status + 'BUDGET:' + i . Event_Budget ) ;
}

Output:

Mayroon lamang isang tala na nakakatugon sa parehong mga kondisyon.

Paliwanag:

Dito, tinukoy namin ang dalawang kundisyon sa expression ng lambda. Ang && (at) operator ay ginagamit upang gawing True ang dalawang kundisyon. Ang unang kundisyon ay gumagamit ng EndsWith() na paraan upang suriin kung ang isang string ay nagtatapos sa ibinigay na string. Ang pangalawang kundisyon ay gumagamit ng operator na 'Paghahambing' (==) upang suriin kung pareho ang mga halaga o hindi.

Konklusyon

Sa C#, kinukuha ng lambda expression ang mga expression/conditional statement bilang katawan nito nang walang pangalan. Kailangan nating tukuyin ang mga parameter. Pagkatapos, ang mga expression ay itinalaga dito. Karaniwan, ginagamit ang mga ito upang i-filter ang mga talaan mula sa ibinigay na data source, ibahin ang anyo ng mga elemento, at piliin ang mga elemento mula sa data source/sequence. Sa gabay na ito, tinalakay namin ang limang magkakaibang halimbawa na pumipili, nag-filter, at nagbabago ng mga elemento gamit ang lambda expression.