C# LINQ Lambda İfadeleri

C Linq Lambda Ifadeleri



C#'daki Lambda ifadesi, ifadeleri/koşullu ifadeleri doğrudan gövdesi olarak adsız olarak alır. Parametreleri belirtmemiz gerekiyor ve ardından ifadeler ona atanıyor. Language Integrated Query (LINQ) ile çalışırken, veri kaynağında bulunan verileri dönüştürmeniz veya bir veri kaynağını başka bir veri kaynağına dönüştürmeniz gerekebilir. Bu kılavuzda, lambda ifadesini belirterek veri kaynağından kayıtları nasıl filtreleyeceğimizi ve veri kaynağından kayıtları nasıl seçeceğimizi göreceğiz.

Sözdizimi:

  1. Lambda İfadesi: (parametreler) => ifade
  2. Lambda Beyanı: { koşullu ifade1 ifade2 … }

Örnek 1:

Beş dizeyi içeren 'gübreler' listesini oluşturun. Listedeki tüm dizeleri döndüren lambda ifadesini kullanın.

kullanarak sistem ;
kullanarak System.Linq ;
kullanarak System.Collections.Generic ;

sınıf LambdaExpressionÖrnek {

statik halk geçersiz Ana ( )
{

// Gübre listesi oluştur
gübre listesi = yeni Liste ( ) ;
gübreler . Eklemek ( 'Üre' ) ;
gübreler . Eklemek ( 'azot' ) ;
gübreler . Eklemek ( 'potasyum' ) ;
gübreler . Eklemek ( 'Diamonyum fosfat' ) ;
gübreler . Eklemek ( 'fosfor' ) ;

// Tüm gübreleri seçmek için LambdaExpression kullanın
öyleydi sonuç = gübreler . Seçme ( giriş1 => giriş1 ) ;
her biri için ( öyleydi Ben içinde sonuç )
{
Konsol . Yazı çizgisi ( Ben ) ;
}

}
}

Çıktı:









Açıklama:



1. 'Gübreler' adlı dize türü listesini oluşturun. Bu listeye beş dize ekleyin.

2. Tüm gübreleri seçmek için lambda ifadesini kullanın. Burada ifade “Select” operatörü ile kullanılmaktadır. ifade inp1 => inp1. Ardından, lambda ifadesi tarafından döndürülen dizeleri görüntülemek için 'foreach' döngüsünü kullanırız.





Örnek 2:

“Fosfat” içeren gübreleri seçmek için lambda ifadesini kullanın.

kullanarak sistem ;
kullanarak System.Linq ;
kullanarak System.Collections.Generic ;

sınıf LambdaExpressionÖrnek {

statik halk geçersiz Ana ( )
{

// Gübre listesi oluştur
gübre listesi = yeni Liste ( ) ;
gübreler . Eklemek ( 'Üre' ) ;
gübreler . Eklemek ( 'azot' ) ;
gübreler . Eklemek ( 'orto - Fosfat' ) ;
gübreler . Eklemek ( 'Diamonyum fosfat' ) ;
gübreler . Eklemek ( 'fosfor' ) ;

// 'Fosfat' içeren gübreleri seçmek için LambdaExpression kullanın
öyleydi sonuç = gübreler . Nerede ( giriş1 => giriş1 . içerir ( 'Fosfat' ) ) ;
her biri için ( öyleydi Ben içinde sonuç )
{
Konsol . Yazı çizgisi ( Ben ) ;
}

}
}

Çıktı:



İçinde “Fosfat” geçen iki tel vardır.

Açıklama:

1. 'Gübreler' adlı bir dize türü listesi oluşturun. Bu listeye beş dize ekleyin.

2. Burada ifade “Where” operatörü ile birlikte kullanılır. ifade inp1 => inp1.Contains(“Fosfat”). Ardından, lambda ifadesi tarafından döndürülen dizeleri görüntülemek için 'foreach' döngüsünü kullanırız.

Örnek 3:

Üç sipariş içeren bir listemiz (order_quantity) olsun. Her siparişe 5 eklemek için lambda ifadesini belirtin.

kullanarak sistem ;
kullanarak System.Linq ;
kullanarak System.Collections.Generic ;

sınıf LambdaExpressionÖrnek {

statik halk geçersiz Ana ( )
{

// Miktar listesi oluştur
order_quantity'yi listele = yeni Liste ( ) ;
Sipariş Miktarı . Eklemek ( 5 ) ;
Sipariş Miktarı . Eklemek ( 7 ) ;
Sipariş Miktarı . Eklemek ( 8 ) ;

// LambdaExpression'ı her sipariş için 5'e kadar kullanın.
öyleydi sonuç = Sipariş Miktarı . Seçme ( giriş1 => giriş1 + 5 ) ;
her biri için ( öyleydi Ben içinde sonuç )
{
Konsol . Yazı çizgisi ( Ben ) ;
}

}
}

Çıktı:

[5,7,8] listesi [10,12,13]'e dönüştürülür.

Açıklama:

1. Tamsayı türünde miktarların listesini oluşturun.

2. Önce sıraları seçiyoruz ve ardından her sıraya 5 ekliyoruz. Bu nedenle “Seç” operatörü kullanılır. ifade inp1 => inp1 + 5.

Örnek 4:

Olay tipinde bir liste veri kaynağı oluşturun (üç özniteliğe sahip – Event_Name, Event_Status ve Event_Budget) ve 5000'den büyük Event_Budget ile kayıtları döndürün.

kullanarak sistem ;
kullanarak System.Linq ;
kullanarak System.Collections.Generic ;

// 5 olay içeren - 'Event_Source' adlı bir sınıf oluşturun.
halk sınıf Olay_Kaynağı
{
halk statik geçersiz Ana ( )
{
// Etkinlik Listesi
IList olayları = yeni Liste ( ) {
yeni Etkinlik ( ) { Etkinlik adı = 'Teknik Kamp' ,Etkinlik_Durum = 'Planlanmış' ,Etkinlik_Bütçesi = 10000 } ,
yeni Etkinlik ( ) { Etkinlik adı = 'Pazarlama Kampı' ,Etkinlik_Durum = 'Tamamlanmış' ,Etkinlik_Bütçesi = 5000 } ,
yeni Etkinlik ( ) { Etkinlik adı = 'Diğer' ,Etkinlik_Durum = 'Planlanmış' ,Etkinlik_Bütçesi = 1000 } ,
yeni Etkinlik ( ) { Etkinlik adı = 'Siyaset' ,Etkinlik_Durum = 'Planlanmış' ,Etkinlik_Bütçesi = 13000 } ,
yeni Etkinlik ( ) { Etkinlik adı = 'Finans' ,Etkinlik_Durum = 'Tamamlanmış' ,Etkinlik_Bütçesi = 20000 } ,
} ;

//Event_Budget 5000'den büyük.
öyleydi sonuç = olaylar . Nerede ( giriş1 => giriş1 . Etkinlik_Bütçesi > 5000 ) ;
her biri için ( öyleydi Ben içinde sonuç ) {
Konsol . Yazı çizgisi ( 'İSİM: ' + Ben . Etkinlik adı + ' DURUM: ' + Ben . Olay_Durum + ' BÜTÇE: ' + Ben . Etkinlik_Bütçesi ) ;
}
}
}

halk sınıf Etkinlik {
halk sicim Etkinlik adı { elde etmek ; ayarlamak ; }
halk sicim Olay_Durum { elde etmek ; ayarlamak ; }
halk int Etkinlik_Bütçesi { elde etmek ; ayarlamak ; }
}

Çıktı:

'Olaylar' listesinde, Event_Budget değeri 5000'den büyük olan üç kayıt vardır.

Açıklama:

1. İlk olarak, üç özelliğe sahip bir 'Etkinlik' sınıfı oluşturuyoruz.

2. Ardından, beş olaydan oluşan bir liste oluşturuyoruz.

3. inp1 => inp1.Event_Budget > 5000 lambda ifadesinde Event_Budget değeri 5000'den büyük olan kayıtları seçiyoruz.

Örnek 5:

Önceki kodu kullanın ve lambda ifadesini değiştirin. 'Kamp' ile biten Event_Name ve 'Planned' Event_Status ile olayları döndürün.

//Lambda İfadesi - Event_Name 'Camp' ile biter ve Event_Status 'Planlandı' şeklindedir.
öyleydi sonuç = olaylar . Nerede ( giriş1 => giriş1 . Etkinlik adı . Şununla Biter: ( 'Kamp' ) && giriş1 . Olay_Durum == 'Planlanmış' ) ;
her biri için ( öyleydi Ben içinde sonuç ) {
Konsol . Yazı çizgisi ( 'İSİM: ' + Ben . Etkinlik adı + ' DURUM: ' + Ben . Olay_Durum + ' BÜTÇE: ' + Ben . Etkinlik_Bütçesi ) ;
}

Çıktı:

Her iki koşulu da karşılayan yalnızca bir kayıt vardır.

Açıklama:

Burada lambda ifadesinde iki koşul belirtiyoruz. && (ve) operatörü, iki koşulu True yapmak için kullanılır. İlk koşul, bir dizgenin verilen dizgeyle bitip bitmediğini kontrol etmek için EndsWith() yöntemini kullanır. İkinci koşul, her iki değerin de eşit olup olmadığını kontrol etmek için 'Karşılaştırma' operatörünü (==) kullanır.

Çözüm

C#'ta lambda ifadesi, ifadeleri/koşullu ifadeleri bir isim olmadan gövdesi olarak alır. Parametreleri belirtmemiz gerekiyor. Ardından, ifadeler ona atanır. Temel olarak bunlar, verilen veri kaynağından kayıtları filtrelemek, öğeleri dönüştürmek ve veri kaynağından/dizisinden öğeleri seçmek için kullanılır. Bu kılavuzda, lambda ifadesini kullanarak öğeleri seçen, filtreleyen ve dönüştüren beş farklı örneği ele aldık.