Menulis Query di C# LINQ

Menulis Query Di C Linq



Mirip dengan SQL, dimungkinkan untuk menulis kueri di C# LINQ menggunakan sintaks kueri. Kueri ini digunakan dalam aplikasi basis data C# di web untuk mendapatkan data dari basis data dan ditampilkan di web kepada pengguna pihak ketiga. Dalam panduan ini, kita akan membahas beberapa kueri LINQ yang mirip dengan SQL. Untuk ini, kami akan membuat daftar sumber data dan menerapkan kueri di dalamnya.

Sintaks Kueri:

Mari kita lihat sintaks umum:

dari iterator di dalam Sumber data
Pilih iterator ;

Di Sini:







  1. Data_Source bisa menjadi daftar yang menyimpan data.
  2. Iterator digunakan untuk mengambil elemen dari Data_Source.

Sumber data

Di seluruh panduan ini, kami akan menggunakan daftar rekaman berikut sebagai sumber data dan semua kueri hanya diterapkan pada sumber data ini. Pastikan Anda menjalankan kode ini di lingkungan Anda dan memodifikasi pernyataan kueri dengan contoh berikut satu per satu yang akan kita diskusikan:



menggunakan Sistem ;
menggunakan System.Collections.Generic ;
menggunakan System.Linq ;
menggunakan System.Collections ;

publik kelas Perhitungan
{
publik statis ruang kosong Utama ( )
{
// Pembuatan daftar
Cantumkan harga_negara = baru Daftar ( ) {

// Tambahkan 5 catatan ke dalam Daftar
baru Harga ( ) { barang = 'Buah' , lokasi = 'AMERIKA SERIKAT' , kuantitas = 100 , biaya = 345.78 } ,
baru Harga ( ) { barang = 'Gila' , lokasi = 'India' , kuantitas = 200 , biaya = 3645.78 } ,
baru Harga ( ) { barang = 'Yang lain' , lokasi = 'Inggris Raya' , kuantitas = 500 , biaya = 90.68 } ,
baru Harga ( ) { barang = 'minyak' , lokasi = 'AMERIKA SERIKAT' , kuantitas = 100 , biaya = 345.78 } ,
baru Harga ( ) { barang = 'Cabai' , lokasi = 'AMERIKA SERIKAT' , kuantitas = 10 , biaya = 67.89 } ,
} ;


untuk setiap ( dulu Saya di dalam country_prices )
{
Menghibur . WriteLine ( Saya . barang + ' ' + Saya . lokasi + ' ' + Saya . kuantitas + ' ' + Saya . biaya ) ;
}
}
}
publik kelas Harga {
publik rangkaian barang { mendapatkan ; mengatur ; }
publik rangkaian lokasi { mendapatkan ; mengatur ; }
publik int kuantitas { mendapatkan ; mengatur ; }
publik dobel biaya { mendapatkan ; mengatur ; }
}

Rekaman:







Penjelasan:

1. Buat harga dengan atribut berikut:

2. Buat kelas lain yaitu “Perhitungan” dengan metode utama dan buat daftar country_prices dengan lima record.



Pilih

Pada dasarnya, 'pilih' adalah operator proyeksi yang memilih atribut dari sumber data yang ditentukan. Kueri dimulai dengan 'dari'. Kemudian, kami menentukan iterator yang mengulang sumber data. Kemudian, operator 'pilih' ditentukan.

Sintaksis:

Semua Atribut: dari iterator di Data_Source pilih iterator;

Atribut Spesifik: dari iterator di Data_Source pilih iterator.attribute;

Contoh 1:

Mari tulis kueri untuk memilih semua catatan dari daftar.

menggunakan Sistem ;
menggunakan System.Collections.Generic ;
menggunakan System.Linq ;
menggunakan System.Collections ;

publik kelas Perhitungan
{
publik statis ruang kosong Utama ( )
{
// Pembuatan daftar
Cantumkan harga_negara = baru Daftar ( ) {

// Tambahkan 5 catatan ke dalam Daftar
baru Harga ( ) { barang = 'Buah' , lokasi = 'AMERIKA SERIKAT' , kuantitas = 100 , biaya = 345.78 } ,
baru Harga ( ) { barang = 'Gila' , lokasi = 'India' , kuantitas = 200 , biaya = 3645.78 } ,
baru Harga ( ) { barang = 'Yang lain' , lokasi = 'Inggris Raya' , kuantitas = 500 , biaya = 90.68 } ,
baru Harga ( ) { barang = 'minyak' , lokasi = 'AMERIKA SERIKAT' , kuantitas = 100 , biaya = 345.78 } ,
baru Harga ( ) { barang = 'Cabai' , lokasi = 'AMERIKA SERIKAT' , kuantitas = 10 , biaya = 67.89 } ,
} ;

// pilih operator dalam kueri
dulu data = dari Saya di dalam country_prices
Pilih Saya ;

untuk setiap ( dulu Saya di dalam data )
{
Menghibur . WriteLine ( Saya . barang + ' ' + Saya . lokasi + ' ' + Saya . kuantitas + ' ' + Saya . biaya ) ;

}
}
}
publik kelas Harga {
publik rangkaian barang { mendapatkan ; mengatur ; }
publik rangkaian lokasi { mendapatkan ; mengatur ; }
publik int kuantitas { mendapatkan ; mengatur ; }
publik dobel biaya { mendapatkan ; mengatur ; }
}

Keluaran:

Di sini, kami tidak menentukan atribut apa pun dalam kueri 'pilih'. Kami mengambil semua atribut dari kueri (data) di dalam loop 'foreach' menggunakan iterator.

Contoh 2:

Sekarang, dapatkan item dengan menentukan atribut item dalam operator 'pilih'. Kuerinya adalah  “ dari i di country_prices pilih i.item ”.

//pilih operator untuk mendapatkan atribut item dalam kueri
dulu data = dari Saya di dalam country_prices
Pilih Saya . barang ;

untuk setiap ( dulu Saya di dalam data )
{
Menghibur . WriteLine ( Saya ) ;

}

Keluaran:

Baris #21 – Baris #29:

2. Dimana

Jika Anda ingin memfilter data berdasarkan beberapa kondisi, Anda dapat menggunakan operator 'di mana' dalam kueri bersama dengan klausa 'pilih'. Tetapi operator 'di mana' digunakan terlebih dahulu dan kemudian operator pilih ditentukan.

Sintaksis:

Mari kita lihat cara menggunakan operator 'di mana' di dalam kueri LINQ.

dari iterator di dalam Sumber data
Di mana kondisi / S
Pilih iterator . atribut ;

Contoh 1: Kondisi Tunggal

Mari memfilter catatan berdasarkan atribut item. Gunakan operator sama dengan (==) di operator “di mana” sebagai syarat dan bandingkan iterator dengan “Cabai”. Jadi, catatan yang terkait dengan 'Cabai' dipilih.

Kuerinya adalah “ dari saya di country_prices
dimana i.item == “Cabai”
pilih saya”

//pilih dengan tempat memfilter catatan
dulu data = dari Saya di dalam country_prices
Di mana Saya . barang == 'Cabai'
Pilih Saya ;

untuk setiap ( dulu Saya di dalam data )
{
Menghibur . WriteLine ( Saya . barang + ' ' + Saya . lokasi + ' ' + Saya . kuantitas + ' ' + Saya . biaya ) ;

}

Keluaran:

Hanya ada satu rekor dengan item “Cabai”.

Baris #21 – Baris #30:

Contoh 2: Beberapa Kondisi

Mari memfilter rekaman berdasarkan atribut lokasi dan kuantitas. Jumlahnya harus lebih besar dari 50 dan kurang dari 300. Lokasinya harus 'USA'.

Kuerinya adalah “ dari saya di country_prices
di mana i.kuantitas > 50
di mana i.kuantitas < 300
di mana i.lokasi == “USA”
pilih saya”

//pilih dengan tempat memfilter catatan dengan menentukan beberapa kondisi
dulu data = dari Saya di dalam country_prices
Di mana Saya . kuantitas > lima puluh
Di mana Saya . kuantitas < 300
Di mana Saya . lokasi == 'AMERIKA SERIKAT'
Pilih Saya ;

untuk setiap ( dulu Saya di dalam data )
{
Menghibur . WriteLine ( Saya . barang + ' ' + Saya . lokasi + ' ' + Saya . kuantitas + ' ' + Saya . biaya ) ;

}

Keluaran:

Ada dua catatan yang cocok dengan kondisi sebelumnya.

Baris #21 – Baris #32:

Contoh 3: Dan (&&) Operator

Kami dapat menentukan operator 'dan (&&)' untuk menentukan beberapa kondisi sekaligus. Jika semua kondisi benar, rekaman yang memenuhi semua kondisi akan dikembalikan oleh kueri.

Dalam contoh ini, kami memilih rekaman jika jumlahnya lebih besar dari 20 dan biayanya 67,89.

Kuerinya adalah “ dari saya di country_prices
di mana i.kuantitas < 20 && i.biaya == 67,89
pilih saya”

dulu data = dari Saya di dalam country_prices
Di mana Saya . kuantitas < dua puluh && Saya . biaya == 67.89
Pilih Saya ;

untuk setiap ( dulu Saya di dalam data )
{
Menghibur . WriteLine ( Saya . barang + ' ' + Saya . lokasi + ' ' + Saya . kuantitas + ' ' + Saya . biaya ) ;

}

Keluaran:

Hanya ada satu catatan dengan kuantitas kurang dari 20 dan biaya 67,89

Baris #21 – Baris #29:

Contoh 4: Atau (||) Operator

Operator “atau (||)” juga digunakan untuk menentukan beberapa kondisi sekaligus. Jika setidaknya satu kondisi benar, rekaman yang memenuhi kondisi tersebut akan dikembalikan.

Dalam contoh ini, kami memilih catatan jika jumlahnya lebih besar dari 300 atau lokasinya adalah 'Tokyo'.

Kuerinya adalah “ dari saya di country_prices
di mana i.jumlah > 300 || i.lokasi == “Tokyo”
pilih saya”

dulu data = dari Saya di dalam country_prices
Di mana Saya . kuantitas > 300 || Saya . lokasi == 'Tokyo'
Pilih Saya ;

untuk setiap ( dulu Saya di dalam data )
{
Menghibur . WriteLine ( Saya . barang + ' ' + Saya . lokasi + ' ' + Saya . kuantitas + ' ' + Saya . biaya ) ;

}

Keluaran:

Hanya ada satu record dengan jumlah yang lebih besar dari 300 (kondisi pertama cocok).

Baris #21 – Baris #29:

3. Pesan Oleh

Jika Anda ingin menyusun rekaman yang dikembalikan oleh kueri LINQ dalam urutan menaik atau menurun berdasarkan nilai di salah satu atribut, Anda bisa menggunakan operator 'urutkan menurut' dalam kueri. Anda harus menentukan operator ini sebelum operator 'pilih'.

Sintaksis:

Mari kita lihat cara menggunakan operator 'order by' di dalam kueri LINQ.

Urutan naik:

dari iterator di dalam Sumber data
memesan oleh iterator . atribut naik
Pilih iterator ;

Urutan menurun:

dari iterator di dalam Sumber data
memesan oleh iterator . atribut menurun
Pilih iterator ;

Contoh 1: Urutan Naik

Pilih semua atribut dari sumber data (daftar) dan kembalikan dalam urutan menaik berdasarkan nilai dalam atribut kuantitas.

Kuerinya adalah “ dari saya di country_prices
orderby i.quantity naik
pilih saya”

dulu data = dari Saya di dalam country_prices
dipesan oleh i . kuantitas naik
Pilih Saya ;

untuk setiap ( dulu Saya di dalam data )
{
Menghibur . WriteLine ( Saya . barang + ' ' + Saya . lokasi + ' ' + Saya . kuantitas + ' ' + Saya . biaya ) ;

}

Keluaran:

Baris #21 – Baris #29:

Contoh 2: Urutan Menurun

Pilih semua atribut dari sumber data (daftar) dan kembalikan dalam urutan menurun berdasarkan nilai dalam atribut biaya.

Kuerinya adalah “ dari saya di country_prices
orderby i.biaya menurun
pilih saya”

dulu data = dari Saya di dalam country_prices
dipesan oleh i . biaya menurun
Pilih Saya ;

untuk setiap ( dulu Saya di dalam data )
{
Menghibur . WriteLine ( Saya . barang + ' ' + Saya . lokasi + ' ' + Saya . kuantitas + ' ' + Saya . biaya ) ;

}

Keluaran:

Baris #21 – Baris #29:

4. Batasi

Batasi dalam SQL membatasi rekaman yang dikembalikan oleh kueri. Ini mengembalikan catatan teratas yang dikembalikan oleh kueri. Di LINQ, kita dapat melakukannya dengan memanfaatkan Skip() dengan operator Take(). Take() mendapatkan jumlah record yang ditentukan. Lewati () digunakan untuk menentukan nomor catatan awal. Dengan cara ini, kita dapat mencapai fungsionalitas 'batas' di LINQ.

Sintaksis:

( dari iterator di dalam Sumber data
Pilih iterator ) . Melewati ( N ) . Mengambil ( N ) ;
  1. Lewati () digunakan untuk melewati catatan dan mengembalikan catatan yang tersisa. Dibutuhkan bilangan bulat yang menentukan jumlah elemen yang akan dilewati. Dalam kasus kami, ini adalah 0.
  2. Take() digunakan untuk mengambil “n” jumlah record dari record pertama.

Contoh:

Pilih tiga rekaman pertama dari lima rekaman yang dikembalikan oleh kueri.

Kuerinya adalah “ (dari i di country_prices
pilih i).Lewati(0).Ambil(3)”

dulu data = ( dari Saya di dalam country_prices
Pilih Saya ) . Melewati ( 0 ) . Mengambil ( 3 ) ;

untuk setiap ( dulu Saya di dalam data )
{
Menghibur . WriteLine ( Saya . barang + ' ' + Saya . lokasi + ' ' + Saya . kuantitas + ' ' + Saya . biaya ) ;

}

}

Keluaran:

Baris #21 – Baris #28:

Kesimpulan

Kami belajar cara menulis kueri di C# LINQ yang mirip dengan SQL. Sebagai bagian dari tutorial ini, kami membahas cara menggunakan operator 'pilih' untuk memilih rekaman dari sumber data. Untuk memfilter rekaman yang dikembalikan oleh kueri, kami menggunakan operator 'di mana' dengan menentukan kondisinya. Kemudian, kami mempelajari cara mengurutkan rekaman yang dikembalikan oleh kueri dengan operator 'urutkan berdasarkan'. Terakhir, untuk membatasi record, kami menggunakan operator Skip() dan Take().