C# LINQ Lambda Expressions

C Linq Lambda Expressions



Ungkapan Lambda dalam C# secara langsung mengambil ungkapan/penyataan bersyarat sebagai badan tanpa nama. Kita perlu menentukan parameter dan kemudian ungkapan diberikan kepadanya. Semasa bekerja dengan Pertanyaan Bersepadu Bahasa (LINQ), anda mungkin mempunyai keperluan yang anda perlukan untuk mengubah data yang terdapat dalam sumber data atau menukar satu sumber data kepada sumber data yang lain. Dalam panduan ini, kita akan melihat cara menapis rekod daripada sumber data dengan menentukan ungkapan lambda dan memilih rekod daripada sumber data.

Sintaks:

  1. Ungkapan Lambda: (parameter) => ungkapan
  2. Kenyataan Lambda: { pernyataan bersyarat1 pernyataan2 … }

Contoh 1:

Buat senarai 'baja' yang mengandungi lima rentetan. Gunakan ungkapan lambda yang mengembalikan semua rentetan daripada senarai.

menggunakan Sistem ;
menggunakan Sistem.Linq ;
menggunakan Sistem.Koleksi.Generik ;

kelas Contoh LambdaExpression {

statik awam batal Utama ( )
{

// Buat Senarai baja
Senaraikan baja = baru Senaraikan ( ) ;
baja . Tambah ( 'Urea' ) ;
baja . Tambah ( 'nitrogen' ) ;
baja . Tambah ( 'potasium' ) ;
baja . Tambah ( 'Di-ammonium Phosphate' ) ;
baja . Tambah ( 'fosforus' ) ;

// Gunakan LambdaExpression untuk memilih semua baja
adalah hasil = baja . Pilih ( inp1 => inp1 ) ;
untuk setiap ( adalah i dalam hasil )
{
Konsol . WriteLine ( i ) ;
}

}
}

Pengeluaran:









Penjelasan:



1. Buat senarai jenis rentetan yang dinamakan 'baja'. Tambahkan lima rentetan pada senarai ini.

2. Gunakan ungkapan lambda untuk memilih semua baja. Di sini, ungkapan digunakan dengan pengendali 'Pilih'. Ungkapannya ialah inp1 => inp1. Kemudian, kami menggunakan gelung 'foreach' untuk memaparkan rentetan yang dikembalikan oleh ungkapan lambda.





Contoh 2:

Gunakan ungkapan lambda untuk memilih baja yang termasuk 'Fosfat'.

menggunakan Sistem ;
menggunakan Sistem.Linq ;
menggunakan Sistem.Koleksi.Generik ;

kelas Contoh LambdaExpression {

statik awam batal Utama ( )
{

// Buat Senarai baja
Senaraikan baja = baru Senaraikan ( ) ;
baja . Tambah ( 'Urea' ) ;
baja . Tambah ( 'nitrogen' ) ;
baja . Tambah ( 'ortho - Fosfat' ) ;
baja . Tambah ( 'Di-ammonium Phosphate' ) ;
baja . Tambah ( 'fosforus' ) ;

// Gunakan LambdaExpression untuk memilih  baja yang termasuk - 'Fosfat'
adalah hasil = baja . di mana ( inp1 => inp1 . Mengandungi ( 'fosfat' ) ) ;
untuk setiap ( adalah i dalam hasil )
{
Konsol . WriteLine ( i ) ;
}

}
}

Pengeluaran:



Terdapat dua rentetan yang termasuk 'Fosfat' di dalamnya.

Penjelasan:

1. Buat senarai jenis rentetan bernama 'baja'. Tambahkan lima rentetan pada senarai ini.

2. Di sini, ungkapan digunakan dengan pengendali 'Di mana'. Ungkapannya ialah inp1 => inp1.Mengandungi('Fosfat'). Kemudian, kami menggunakan gelung 'foreach' untuk memaparkan rentetan yang dikembalikan oleh ungkapan lambda.

Contoh 3:

Mari ada senarai (kuantiti_pesanan) yang memuatkan tiga pesanan. Tentukan ungkapan lambda untuk menambah 5 pada setiap pesanan.

menggunakan Sistem ;
menggunakan Sistem.Linq ;
menggunakan Sistem.Koleksi.Generik ;

kelas Contoh LambdaExpression {

statik awam batal Utama ( )
{

// Cipta Senarai kuantiti
Senaraikan pesanan_kuantiti = baru Senaraikan ( ) ;
Kuantiti pesanan . Tambah ( 5 ) ;
Kuantiti pesanan . Tambah ( 7 ) ;
Kuantiti pesanan . Tambah ( 8 ) ;

// Gunakan LambdaExpression hingga 5 untuk setiap pesanan.
adalah hasil = Kuantiti pesanan . Pilih ( inp1 => inp1 + 5 ) ;
untuk setiap ( adalah i dalam hasil )
{
Konsol . WriteLine ( i ) ;
}

}
}

Pengeluaran:

Senarai [5,7,8] ditukar kepada [10,12,13].

Penjelasan:

1. Buat senarai kuantiti jenis Integer.

2. Kami memilih pesanan dahulu dan kemudian menambah 5 untuk setiap pesanan. Jadi, pengendali 'Pilih' digunakan. Ungkapannya ialah inp1 => inp1 + 5.

Contoh 4:

Buat sumber data senarai jenis Peristiwa (dengan tiga atribut – Event_Name, Event_Status dan Event_Budget) dan kembalikan rekod dengan Event_Budget yang lebih besar daripada 5000.

menggunakan Sistem ;
menggunakan Sistem.Linq ;
menggunakan Sistem.Koleksi.Generik ;

// Cipta kelas bernama - 'Event_Source' dengan 5 acara.
awam kelas Sumber_Peristiwa
{
awam statik batal Utama ( )
{
// Senarai Acara
Acara IList = baru Senaraikan ( ) {
baru Peristiwa ( ) { Nama acara = 'Kem Teknikal' ,Status_Event = 'Dirancang' ,Belanjawan_Acara = 10000 } ,
baru Peristiwa ( ) { Nama acara = 'Kem Pemasaran' ,Status_Event = 'Selesai' ,Belanjawan_Acara = 5000 } ,
baru Peristiwa ( ) { Nama acara = 'Lain-lain' ,Status_Event = 'Dirancang' ,Belanjawan_Acara = 1000 } ,
baru Peristiwa ( ) { Nama acara = 'Politik' ,Status_Event = 'Dirancang' ,Belanjawan_Acara = 13000 } ,
baru Peristiwa ( ) { Nama acara = 'Kewangan' ,Status_Event = 'Selesai' ,Belanjawan_Acara = 20000 } ,
} ;

//Belanjawan_Acara lebih daripada 5000.
adalah hasil = peristiwa . di mana ( inp1 => inp1 . Belanjawan_Acara > 5000 ) ;
untuk setiap ( adalah i dalam hasil ) {
Konsol . WriteLine ( 'NAMA: ' + i . Nama acara + ' STATUS: ' + i . Status_Peristiwa + 'BAJET:' + i . Belanjawan_Acara ) ;
}
}
}

awam kelas Peristiwa {
awam tali Nama acara { dapatkan ; ditetapkan ; }
awam tali Status_Peristiwa { dapatkan ; ditetapkan ; }
awam int Belanjawan_Acara { dapatkan ; ditetapkan ; }
}

Pengeluaran:

Terdapat tiga rekod dalam senarai 'acara' dengan Belanjawan_Acara lebih daripada 5000.

Penjelasan:

1. Mula-mula, kami mencipta kelas 'Acara' dengan tiga atribut.

2. Kemudian, kami membuat senarai lima acara.

3. Menggunakan inp1 => inp1.Belanjawan_Acara > 5000 lambda, kami memilih rekod dengan Event_Budget lebih daripada 5000.

Contoh 5:

Gunakan kod sebelumnya dan tukar ungkapan lambda. Kembalikan acara dengan Event_Name yang berakhir dengan 'Camp' dan dengan Event_Status yang 'Dirancang'.

//Lambda Expression - Event_Name berakhir dengan 'Camp' dan Event_Status ialah 'Dirancang'.
adalah hasil = peristiwa . di mana ( inp1 => inp1 . Nama acara . BerakhirDengan ( 'Kem' ) && inp1 . Status_Peristiwa == 'Dirancang' ) ;
untuk setiap ( adalah i dalam hasil ) {
Konsol . WriteLine ( 'NAMA: ' + i . Nama acara + ' STATUS: ' + i . Status_Peristiwa + 'BAJET:' + i . Belanjawan_Acara ) ;
}

Pengeluaran:

Hanya terdapat satu rekod yang memenuhi kedua-dua syarat.

Penjelasan:

Di sini, kami menentukan dua syarat dalam ungkapan lambda. Pengendali && (dan) digunakan untuk menjadikan dua syarat sebagai Benar. Syarat pertama menggunakan kaedah EndsWith() untuk menyemak sama ada rentetan berakhir dengan rentetan yang diberikan. Syarat kedua menggunakan operator 'Perbandingan' (==) untuk menyemak sama ada kedua-dua nilai adalah sama atau tidak.

Kesimpulan

Dalam C#, ungkapan lambda mengambil ungkapan/penyataan bersyarat sebagai badannya tanpa nama. Kita perlu menentukan parameter. Kemudian, ungkapan ditugaskan kepadanya. Pada asasnya, ini digunakan untuk menapis rekod daripada sumber data yang diberikan, mengubah elemen dan memilih elemen daripada sumber/jujukan data. Dalam panduan ini, kami membincangkan lima contoh berbeza yang memilih, menapis dan mengubah elemen menggunakan ungkapan lambda.