net/publication/359439569
CITATIONS READS
0 365
2 authors:
Some of the authors of this publication are also working on these related projects:
Effect of features Generated from additional segments in protein sequence classification View project
All content following this page was uploaded by M Reza Faisal on 25 March 2022.
M. Reza Faisal
Erick Kurniawan
Belajar C#: Panduan Lengkap LINQ
© 2022 M Reza Faisal, Erick Kurniawan
87 halaman, 16,5 x 23 cm
Penerbit
Scripta Cendekia
Banjarbaru, Kalimantan Selatan, Indonesia
E: scriptacendekia@gmail.com
Pembaca Buku
Buku ini ditujukan kepada pembaca yang telah mengerti dasar-dasar algoritma
dan konsep pemrograman berbasis obyek (Object Oriented Programming)
dengan bahasa pemrograman C#. Pembaca juga diharapkan telah memiliki
dasar-dasar penggunakan Structured Query Language (SQL) pada database.
Mengenal .NET
.NET adalah developer platform dengan bahasa pemrograman, tool dan library
untuk membangun berbagai tipe aplikasi seperti web, mobile, desktop, game,
IoT dan microservice. Saat ini .NET sudah mencapai versi 6.
1
console, desktop dan web. .NET Framework hanya dapat dijalankan di atas
sistem operasi Windows. Sampai saat ini .NET Framework sudah mecapai versi
4.8 yang dirilis pada tahun 2019.
Di tahun yang sama dengan tahun rilisnya .NET Framework 4.8, dirilis .NET
Core 1.0. .NET Core bukan merupakan kelanjutan dari .NET Framework.
Development platform ini dibuat dan ditulis ulang dari awal. Kelebihan dari
.NET Core adalah sifatnya yang open-source dan dapat dijalankan pada sistem
operasi Windows, Linux dan MacOS. Platform ini tidak hanya dapat digunakan
untuk membangun aplikasi desktop dan web tapi juga dapat digunakan untuk
mengembangkan aplikasi mobile, cloud, IoT, game dan microservice.
Pengembangan .NET Core dimulai pada November 2015 dengan versi RC1 dan
mencapai versi 1.0 pada Juni 2016. Pada perkembangannya nama .NET Core
hanya sampai versi 3.1 yang dirilis pada Desember 2019. Setelah itu namanya
berganti menjadi .NET dengan versi 5.0 yang dirilis pada November 2020. Dan
saat buku ini dibuat telah hadir .NET 6.0 yang dirilis pada bulan November
2021.
Untuk menggunakan .NET maka perlu dilakuan proses unduh dan installasi.
File instalasi .NET dapat diunduh di https://dotnet.microsoft.com/en-
us/download. Tersedia dua tipe installer yaitu .NET Runtime dan .NET SDK.
Jika tujuannya untuk mengembangkan aplikasi maka pilih .NET SDK karena
selain berisi .NET Runtime, installer ini juga berisi SDK (Software Development
Kit) yang digunakan untuk mengembangkan software.
.NET SDK
Pada sub bab ini akan diberikan contoh penggunaan perintah-perintah .NET
SDK. Versi .NET SDK yang digunakan pada buku ini adalah .NET 6 SDK.
Untuk itu pastikan .NET SDK sudah diinstall. Untuk memeriksa status
installasi dapat dilakukan dengan menjalankan Command Prompt seperti yang
dapat dilihat pada Gambar 2.
Keluaran dari perintah tersebut adalah sebagai berikut. Pada output ini dapat
dilihat daftar .NET SDK yang telah diinstal. Pastikan pada daftar SDK terdapat
versi 6 seperti pada teks yang dicetak tebal. Buku ini menggunakan .NET 6 SDK
versi 6.0.101, namun dipersilakan jika menggunakan versi yang lebih baru.
.NET SDK (reflecting any global.json):
Version: 6.0.101
Commit: ef49f6213a
Runtime Environment:
OS Name: Windows
OS Version: 10.0.19043
OS Platform: Windows
RID: win10-x64
Base Path: C:\Program Files\dotnet\sdk\6.0.101\
Untuk mendapatkan daftar SDK saya maka dapat digunakan perintah berikut
ini.
dotnet --list-sdks
Dan untuk menampilkan daftar .NET Runtime maka dapat digunakan perintah
berikut ini.
dotnet --list-runtimes
Sedangkan untuk melihat daftar template project yang dapat dibuat dapat
dilakukan dengan perintah berikut.
dotnet new -l
Misal untuk membuat project Console App dengan bahasa C# dan disimpan
pada folder ContohC# maka ditulis perintah sebagai berikut.
dotnet new console -o ContohC#
Pada perintah di atas tidak digunakan opsi -lang karena jika diperhatikan pada
Gambar 3 bahwa default bahasa pemrograman C#. Contoh lain misal ingin
dibuat project Console App dengan menggunakan bahasa pemrograman F#
dan disimpan ke folder CalculatorF# maka digunakan perintah berikut ini.
dotnet new console -lang F# -o CalculatorF#
Contoh yang lain adalah untuk membuat aplikasi ASP.NET Core Empty
dengan bahasa pemrograman C# dan disimpan ke dalam folder Website maka
digunakan perintah berikut ini.
dotnet new web -o Website
Cara kedua, masuk ke folder project (misal ContohC#) pada Windows Explorer
seperti yang terlihat pada Gambar 4.
C#
Bahasa pemrograman yang didukung .NET adalah C#, Visual Basic dan F#. C#
dibaca dengan See Sharp. C# adalah bahasa pemrograman berorientasi obyek
yang modern dan type-safe. Bahasa ini merupakan keluarga bahasa
pemrograman C seperti bahasa pendahulunya seperti C, C++, atau Java.
Sehingga bagi pembaca yang telah terbiasa dengan bahasa C++ atau Java dapat
dengan mudah untuk belajar dan mengerti bahasa C#.
Saat buku ini ditulis, C# telah mencapai versi 10. Buku ini akan memanfaatkan
fitur-fitur yang telah dimiliki pada versi ini. Jadi diharapkan pembaca dapat
memperhatikan hal ini saat menjalankan contoh-contoh yang diberikan.
1 using System.Data.SqlClient;
2
3 var conn_str = "Data Source=;Initial Catalog=;Persist
4 Security Info=True;User ID=;Password=";
5
6 var conn = new SqlConnection(conn_str);
7 conn.Open();
8
9 var sql = "select * from students";
10 SqlCommand command = new SqlCommand(sql, conn);
1 int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
2
3 var lowNums = from num in numbers select num;
4
5 foreach (var x in lowNums)
6 {
7 Console.WriteLine(x);
8 }
Karena query pada LINQ merupakan bagian dari bahasa pemrograman maka
saat menulis query akan ada bantuan dari fitur IntelliSense untuk membantu
melengkapi kode yang ditulis, selain itu juga ada pengecekan saat dilakukan
kompilasi. Kedua hal tersebut tentu berbeda dengan query yang ditulis sebagai
string.
Kelebihan LINQ yang lain adalah kemampuannya untuk melakukan query dari
sesuatu yang menyimpan data seperti database, XML, atau obyek. Pada buku
ini akan diberikan contoh penggunaan LINQ pada obyek, selain itu juga
diberikan contoh pengguan Entity Framework Core (EF Core) untuk
melakukan query ke database.
EF dapat digunakan untuk melakukan operasi data pada banyak jenis database
dengan cara yang sama. Yang membedakan adalah pada cara melakukan
koneksi saja yang memerlukan driver yang spesifik untuk database yang
digunakan. Dengan mengubah kode untuk melakukan koneksi sesuai dengan
database yang dituju maka kode untuk query dengan tujuan create, retrieve,
update dan delete dapat langsung digunakan tanpa diubah.
Tool Development
Saat ini telah dikembangkan berbagai tool development atau code editor untuk
menulis kode aplikasi berbasis .NET. Secara umum tool ini diinstall terlebih
dahulu pada komputer. Sekarang juga tersedia versi online dari editor
sederhana dengan fasilitas untuk menjalankan kode yang ditulis. Berikut ini
adalah beberapa tool yang dapat digunakan untuk mencoba contoh-contoh
kode yang diberikan pada buku ini.
Visual Studio
Gambar 9. VS 2022.
https://visualstudio.microsoft.com/downloads/
- Enterprise.
- Professional.
- Community.
Versi Enterprise dan Profesional adalah versi yang berbayar sedangkan versi
Community dapat digunakan secara gratis. Untuk melihat perbedaan antara
ketiganya dapat melihat informasi pada link berikut ini.
https://visualstudio.microsoft.com/vs/compare/
Source Code
Contoh kode yang ditulis pada buku ini dapat dilihat pada link berikut ini:
https://github.com/rezafaisal/BelajarLINQ.
Sebagai informasi, jika tautan di atas diakses pada web browser maka dapat
dilihat antarmuka seperti pada Gambar 12.
Pada bab ini diberikan contoh membuat project dengan bahasa pemrograman
C# sederhana dengan menggunakan VS 2022, VS Code dan Try .NET.
Pada Solution Explorer dapat dilihat tambahan sebuah project dengan nama
HelloWorldConsole. Pada project ini berisi Dependencies dan file Program.cs.
Dan secara otomatis juga ditampilkan file Program.cs pada area code editor
seperti yang terlihat pada Gambar 20.
Pada window “Add a new project” (Gambar 22), pilih C# pada dropdown “All
Languages” dan pilih Desktop pada dropdown “All project types”. Tujuan hal
tersebut adalah untuk memfilter daftar template project.
Dari contoh di atas dapat dilihat bagaimana VS 2022 bukan hanya sebagai code
editor, compiler dan untuk mengeksekusi project namun juga terdapat tool-tool
yang membantu jalankan aplikasi.
Folder
Berikut langkah-langkah untuk menulis dan menjalankan kode C# pada VS
Code.
Untuk menjalankan project ini dapat dilakukan dengan klik Terminal yang
ditunjuk oleh panah pada Gambar 26. Setelah itu ketikan perintah dotnet run
pada command line. Hasilnya juga dapat dilihat pada terminal tersebut, contoh
keluarannya dapat dilihat pada Gambar 26.
Kemudian pada VS Code buka folder tersebut dengan menggunakan cara yang
sama seperti yang telah dicontohkan sebelumnya. Kemudian klik dua kali pada
file Program.cs. Kemudian jalankan project ini dengan cara yang sama seperti
sebelumnya. Hasilnya dapat dilihat pada Gambar 28, ditampilkan hasil project
berupa window.
Workspace
Cara lain bekerja dengan VS Code agar mudah mengelola beberapa project
adalah dengan membuat workspace. Berikut ini adalah langkah-langkah yang
dapat diikuti. Buka VS Code dan pastikan tidak ada folder atau workspace yang
tengah dibuka.
Hasilnya dapat dilihat di dalam folder tersebut, ada tambahan file dan folder
seperti yang dapat dilihat pada Gambar 31. Lakukan langkah-langkah untuk
membuat folder dan project jika ingin menambahkan project baru ke dalam
workspace.
Untuk mengetik kode C# tulis pada area warna abu-abu. Untuk menjalankan
kode tersebut klik tombol “Execute Cell” seperti yang ditunjuk oleh panah
hitam di sebelah kiri seperti yang dilihat pada Gambar 34. Sedangkan untuk
menjalankan seluruh kode pada notebook klik tombol Run All yang berada di
bagian atas notebook.
Untuk menulis kode baru maka klik tombol “Add Node Cell” dengan lambang
“+ Code” seperti ditunjuk oleh panah hitam di sebelah kanan bawah.
Console.WriteLine("Hello, World!");
Maka pada Try .NET untuk menulis output yang sama digunakan kode seperti
berikut ini. Template kode ini merupakan struktur kode C# dari versi .NET
sebelumnya.
using System;
Salin kode di atas ini pada area editor di web broser yang telah mengakses web
Try .NET seperti pada.
Hello C#
Secara umum kode program yang ditulis dengan bahasa C# mempunyai aturan
yang mirip dengan bahasa berorientasi obyek seperti Java dan lainnya yaitu
seperti kode di bawah ini.
namespace HelloWorldNet3
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
Pada VS 2022, untuk melihat file yang menyimpan file global using dapat
dilakukan dengan mengklik tombol “Show All Files” seperti ditunjuk oleh panh
bagian atas di Gambar 36. Kemudian pada pilih folder obj > Debug > net6.0
dan file adalah HelloWorldConsole.GlobalUsings.g.cs seperti yang
ditunjuk oleh panah di bawah pada Gambar 36.
Kode 3. HelloWorldConsole.GlobalUsings.g.cs.
HelloWorldConsole.GlobalUsings.g.cs
// <auto-generated/>
global using global::System;
global using global::System.Collections.Generic;
global using global::System.IO;
global using global::System.Linq;
global using global::System.Net.Http;
global using global::System.Threading;
global using global::System.Threading.Tasks;
Seperti yang telah disebutkan di atas, bahasa pemrograman C# dapat
digunakan untuk membuat banyak tipe aplikasi atau project. Selain aplikasi
atau project console juga dapat digunakan untuk membangun aplikasi
Windows Forms atau Web.
Pada Kode 4 dapat dilihat aturan untuk menulis kode program mengikuti
aturan block yang telah disebutkan pada penjelasan di atas. Pada kode ini juga
tidak dilihat penggunaan keyword using, karena penggunaannya ditulis pada
sebuah file dengan nama HelloWorldWinForm.GlobalUsings.g.cs yang
disimpan pada folder obj > Debug > net6.0. Pada Kode 5 dapat dilihat isi dari
file ini.
Kode 5. HelloWorldWinForm.GlobalUsings.g.cs.
HelloWorldWinForm.GlobalUsings.g.cs
// <auto-generated/>
global using global::System;
global using global::System.Collections.Generic;
global using global::System.Drawing;
global using global::System.IO;
global using global::System.Linq;
global using global::System.Net.Http;
global using global::System.Threading;
global using global::System.Threading.Tasks;
global using global::System.Windows.Forms;
Hello LINQ
Pada buku ini contoh-contoh kode program akan ditulis sebagai project
console. Contoh kode LINQ yang diberikan adalah untuk melakukan query
data. Data bisa berbentuk array atau collection.
Contoh penggunakan LINQ dapat dilihat padaKode 6. Pada baris ke-1 dapat
dilihat variable words yang berisi kalimat. Kemudian pada baris ke-3 dapat
dilihat kode LINQ. Contoh yang lain dapat dilihat pada Kode 7.
Bagi pembaca yang telah mengenal operasi database dengan SQL pasti telah
mengenal query seperti berikut. Dimana NAMA_TABEL sebagai sumber data, dan
tanda * bertujuan untuk menampilkan seluruh kolom pada tabel.
select * from NAMA_TABEL
Dimana data adalah nama variable yang menyimpan data baik berupa array
atau collection. Pada Kode 6 nama variable adalah words dan Kode 7 nama
variablenya adalah numbers. Sedangkan datum adalah sebuah nama obyek
yang disimpan di dalam data, nama datum dapat diberi dengan nama yang
diinginkan.
Setelah keyword select adalah obyek datum. Jika ditulis obyek datum yang
ditulis artinya akan ditampilkan seluruh property yang dimiliki oleh obyek
tersebut.
Kemudian isi file Student.cs dengan kode seperti pada Kode 8. Pada file ini
ditambahkan dua class yaitu Student dan Faculty.
Kode 8. Student.cs.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HelloLINQ
{
public class Student
{
public int StudentId { get; set; }
public int FacultyId { get; set; }
public string StudentName { get; set; }
}
Pada kode di atas dapat dilihat terdapat dua block yaitu namespace dan class.
Selanjutnya untuk menggunakan kedua class ini pada file Program.cs maka
perlu ditambahkan baris berikut di baris pertama seperti pada Kode 9.
Kemudian ditambahkan method GetStudentList yang berfungsi untuk
membuat collection yang berisi obyek dari class Student. Selanjutnya
dilakukan query dengan LINQ seperti yang dapat dilihat pada baris ke-25.
Obyek data pada baris tersebut didapat dari keluaran method
GetStudentList. Obyek datum pada query tersebut adalah s. Kemudian
setelah keyword select dapat dilihat ditulis obyek yang sama yaitu s, hal ini
bertujuan untuk memilih seluruh property yang dimiliki oleh obyek s yang
berasal dari class Student. Ini berarti akan didapat dilihat data dari property
StudentId, FacultyId dan StudentName. Hasil query LINQ disimpan ke
obyek queryStudent.
Selanjutnya data ditampilkan dengan cara seperti pada baris ke-27 sampai ke-
31. Pada baris ke-28 dapat dilihat obyek s dapat mengakses seluruh property
sesuai dengan property dari class Student.
Contoh terakhir adalah membuat dan mengakses collection yang berisi obyek
dari class Faculty seperti yang dapat dilihat pada Kode 10. Kode di bawah ini
memiliki kemiirpan alur seperti pada Kode 9, perbedaannya hanya pada class
yang digunakan yaitu Faculty dan nama method untuk membuat data yaitu
GetFacultyList.
return list;
}
Pada bab ini akan dijelaskan bagaimana membuat kode koneksi ke database
dan membuat class model secara otomatis berdasarkan konsep Database First
dengan Entity Framework (EF). Database yang digunakan pada bab ini adalah
MySQL dan SQL Server. Namun pada bab ini tidak membahas EF secara detail,
pembahasan hanya akan untuk melakukan query data awal saja. Hal ini akan
menjadi sumber data yang akan digunakan pada bab-bab selanjutnya.
Pendahuluan
Entity Framework (EF) adalah mapper antara obyek dengan database untuk
digunakan pada teknologi .NET. EF mendukung query LINQ, penelurusan
perubahan, update, dan migrasi skema. EF dapat bekerja dengan banyak
database berbasis cloud atau on-premise yang ada seperti SQL Server, MySQL,
PostgreSQL, SQLite, Azure Cosmos DB dan lain-lain.
Versi pertama EF dikeluarkan pada tahun 2008 sebagai bagian dari .NET
Framework 3.5 SP1 dan Visual Studio 2008 SP1. Saat ini nama EF menjadi Entity
Framework Core (EF Core) yang merupakan bagian dari .NET Core atau yang
sekarang dikenal dengan nama .NET. Dan versi EF Core saat buku ini ditulis
adalah versi 6.
Class DbContext adalah class utama pada EF yang bertugas untuk melakukan
interaksi data sebagai obyek. Class ini akan berinteraksi dengan class model
dalam menulis dan mengeksekusi query, menampung keluaran query ke dalam
obyek, dan lain-lain.
Sedangkan class model adalah model conceptual dari domain aplikasi. Salah
satu realisasi domain aplikasi adalah dalam bentuk tabel-tabel pada database.
Sehingga umumnya class model merupakan representasi tabel-tabel tersebut.
Implementasi dan kode kedua class ini dapat dilihat pada sub bab Error!
Reference source not found. dan Error! Reference source not found..
SQL Server
Bagi pembaca yang terbiasa menggunakan SQL Server maka dapat mengikuti
pembuatan database pada sub bab ini. Bagi yang belum pernah menggunakan
database SQL Server maka dapat terlebih dahulu untuk mengunduh dari link
berikut ini:
https://www.microsoft.com/en-us/sql-server/sql-server-downloads.
https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-
management-studio-ssms.
Setelah installasi selesai maka jalankan SSMS dengan memilih Microsoft SQL
Server Management Studio 18.
Selanjutnya untuk membuat database Northwind, tabel dan mengisi data akan
digunakan SQL untuk SQL Server. Kode SQL yang digunakan untuk membuat
database Northwind pada buku ini didapat dari link berikut ini:
https://github.com/microsoft/sql-server-
samples/tree/master/samples/databases/northwind-pubs.
Untuk melihat database Northwind, klik Databases pada tree menu di sebelah
kiri. Untuk melihat tabel-tabel pada database, klik pada Tables. Sedangkan
untuk melihat data dari sebuah tabel, klik kanan pada sebuah tabel (misal
Customer), kemudian pilih Select Top 1000 Rows. Hasilnya seperti dilihat pada
Gambar 41.
MySQL
Database MySQL yang digunakan pada buku ini adalah menggunakan paket
XAMPP. Installer XAMPP dapat didownload pada link berikut
https://www.apachefriends.org/download.html. Versi XAMPP yang
digunakan adalah XAMPP for Windows 7.4.27 dimana masih menggunakan
PHP 7. Yang wajib dipilih pada tahap installasi adalah PHP, Apache dan
MySQL (MariaDB).
Setelah proses installasi selesai maka jalankan XAMPP Control Panel dengan
tampilan seperti pada Gambar 42. Kemudian klik tombol Start, pada bagian
Apache dan MySQL. Jika service berhasil dijalankan maka tombol akan
berubah menjadi Stop.
Kode SQL
Kode SQL yang disebutkan di atas juga akan kami simpan pada repositori
Github dengan link yang sudah disebutkan pada Bab 1
Command Line
Pada sub bab ini akan diberikan langkah-langkah membuat class DBContext
dan Model untuk database MySQL dan SQL Server dengan cara command line
dengan menggunakan perintah dotnet.
MySQL
Langkah awal adalah mengunduh connector database MySQL untuk .NET
Core. Connector ini berfungsi sebagai driver melakukan koneksi ke database
MySQL. Installernya dapat diunduh pada link berikut ini:
https://dev.mysql.com/downloads/connector/net/8.0.html
Versi yang digunakan saat buku ini ditulis adalah Connector/NET 8.0.28.
Setelah installer diunduh, lakukan installasi.
Kemudian menginstall tool EF Core dan Design dengan dua perintah berikut
di bawah ini. Jalankan perintah satu per satu.
namespace DataAccess.MySQL
{
public partial class northwindContext : DbContext
{
public northwindContext()
{
}
public northwindContext(DbContextOptions<northwindContext>
options)
: base(options)
{
}
Selain itu pada folder MySQL dapat dilihat file-file class Model seperti
Customer.cs atau Employee.cs. Pada Kode 12 adalah isi dari file class
Customer.cs.
#nullable disable
namespace DataAccess.MySQL
{
public partial class Customer
{
public Customer()
{
Customercustomerdemos = new
HashSet<Customercustomerdemo>();
Orders = new HashSet<Order>();
}
Pada sub bab digunakan EF Core 5, hal ini dikarenakan EF Core 6 masih ada
kendala penggunaan saat membuat class DbContext dan Model saat buku ini
ditulis.
SQL Server
Selanjutnya membuat class DbContext dan Model berdasarkan database SQL
Server. Langkah pertama adalah menginstall package
Microsoft.EntityFrameworkCore.SqlServer versi 5 dengan perintah
berikut ini
dotnet add package Microsoft.EntityFrameworkCore.SqlServer --
version 5.0.15
Selanjutnya membuat class DbContext dan Model dengan perintah berikut ini.
dotnet ef dbcontext scaffold "data source=.\SQLEXPRESS;
initial catalog=northwind;persist security info=True;
Integrated Security=SSPI;"
Microsoft.EntityFrameworkCore.SqlServer -o SQLServer -f
Pada perintah itu dapat dilihat connection string yang digunakan adalah
sebagai berikut.
Cara ini digunakan untuk melakukan koneksi ke database SQL Server dengan
Windows Authentication. Jika melakukan koneksi dengan cara user dan login
maka perlu ada penyesuaian pada connection string.
Hasil dari pembuatan class otomatis ini dapat dilihat pada folder SQLServer.
Berikut adalah sebagaian isi dari class DbContext dengan nama
northwindContext.cs seperti yang dapat dilihat pada Kode 13.
#nullable disable
namespace DataAccess.SQLServer
{
public partial class northwindContext : DbContext
{
public northwindContext()
{
}
public northwindContext(DbContextOptions<northwindContext>
options)
: base(options)
{
}
Sedangkan untuk class model Customer.cs dapat dilihat pada Kode 14.
#nullable disable
namespace DataAccess.SQLServer
Jika diperhatikan kedua file class di atas antara SQL Server dan MySQL tidak
terlalu banyak perbedaannya. Seperti pada sub bab sebelumnya, sub bab ini
juga menggunakan EF Core 5. Sebagai informasi untuk database SQL Server
dapat menggunakan EF Core 6 karena tidak ada kendala dalam membuat class
DbContext dan Model.
Koneksi Database
Pada sub bab ini dicontohkan kode untuk memanfaatkan class DbContext dan
Model untuk melakukan operasi database ke database MySQL dan SQL Server.
Class-class untuk MySQL disimpan pada folder MySQL, dan class-class untuk
SQL Server disimpan pada folder SQLServer pada project DataAccess seperti
yang dapat dilihat pada Gambar 45.
Sedangkan untuk mengakses database SQL Server dapat dilihat dengan kode
pada Kode 16.
Karena nama database dan tabel-tabel yang ada pada kedua database sama
maka nama class DbContext dan Model juga sama, sehingga yang diganti
cukup nama namespace yang digunakan pada class-class tersebut. Sehingga
yang diganti cukup pada bagian yang ditulis di baris ke-1 saja.
MySQL
Langkah pertama adalah menambahkan project console dengan framework
adalah .NET 6.0 pada solution BelajarLINQ. Nama project yang dibuat adalah
DataAccess.
Hasilnya dapat dilihat dibuat folder MySQL dengan isi class-class seperti pada
Gambar 49.
SQL Server
Dengan menggunakan project DataAccess maka cukup menambahkan package
Microsoft.EntityFrameworkCore.SqlServer versi 5.0.15 seperti yang dapat
dilihat pada Gambar 50.
Perintah ini mirip seperti perintah yang digunakan pada sub bab sebelumnya.
Perbedaannya adalah connection string yang digunakan yaitu untuk
melakukan koneksi ke database SQL Server. Kemudian perbedaan pada nama
package yang digunakan untuk melakukan koneksi ke database SQL Server
yaitu Microsoft.EntityFrameworkCore.SqlServer. Dan yang terakhir
adalah folder SQLServer pada project DataAccess untuk menyimpan class-
class.
Koneksi Database
Untuk menguji dari class DbContext dan Model dari databse MySQL
digunakan kode seperti berikut yang ditulis pada file Program.cs di project
DataAccess.
Kedua kode di atas sama dengan Kode 15 dan Kode 16 yang dibuat dengan
command line. Seperti yang telah disebutkan pada sub bab sebelumnya, walau
jenis database servernya berbeda (antara MySQL dan SQL Server) namun
karena nama database dan tabel sama, serta atribut tabel sama sehingga antara
kode pertama dan kedua hanya berbeda di baris pertama saja.
Baris ke-3 cukup ditulis sekali saja dengan tujuan untuk membuat obyek dari
DbContext. Obyek ini memiliki method-method untuk melakukan operasi
CRUD (Create Retrieve Update Delete).
Kemudian pada baris ke-5 dapat dilihat dibuat obyek c dari class Customer
yang merupakan class Model. Seperti yang telah disebutkan sebelumnya class
ini merupakan representasi dari tabel customer. Dengan obyek c dapat
digunakan untuk mengakses property-property yang merupakan representasi
dari atribut dari tabel customer. Pada baris ke-6 dan ke-7, dilakukan pengisian
property CustomerId dan CompanyName yang memiliki makna yagn sama
dengan memberikan nilai pada atribut CustomerID dan CompanyName pada
tabel customer. Selanjutnya pada baris ke-9, obyek c akan ditambahkan ke
dalam collection atau dengan kata lain record baru yang baru ditambahkan
Karena buku ini hanya akan membahas melakukan query dengan LINQ, maka
untuk melakukan operasi update dan menghapus data dapat dilihat pada buku
lain yang kami telah tulis yang membahas ASP.NET dan database seperti:
- Seri Belajar ASP.NET: ASP.NET Core MVC & MySQL dengan Visual
Studio Code.
- Seri Belajar ASP.NET: ASP.NET Core 2 MVC & MS SQL Server dengan
Visual Studio 2017.
- Seri Belajar ASP.NET: ASP.NET Core 2 MVC & MS SQL Server dengan
Visual Studio 2017.
Ketiga buku tersebut dapat diunduh pada Google Play Book.
Klausa Select
Pada bab 2 Hello World! sub bab Hello LINQ telah diberikan beberapa contoh
query dengan LINQ dimana rangkaian output sama dengan rangkaian input.
Sebagai contoh rangkaian input adalah array berisi integer, maka rangkaian
output juga adalah array berisi integer. Contoh yang lain rangkaian input
adalah collection dengan isi obyek dari class Student, maka rangkaian output
juga berisi collection dengan isi obyek yang sama.
Selain itu keyword select juga dapat memberikan output yang berbeda karena
adanya modifikasi nilai dari rangkaian input seperti pada Kode 20.
Console.WriteLine("Bilangan + 1:");
foreach (var i in query1)
{
Console.WriteLine(i);
}
Console.WriteLine("========================");
Atau hasil seluruh ketiga kode di atas dapat dilihat pada Gambar 53. Sedangkan
kode lengkap dari contoh sub bab ini dapat dilihat pada source code di folder
BAB_03 > Projection_01.
Untuk contoh kasus ini dibuat project baru dengan nama Projection_02 yang
menggunakan template project Console. Selanjutnya tambahkan class dengan
return list;
}
Pada query1 dapat dilihat bagaimana cara memilih sebuah property yaitu
StudentId sebagai output. Untuk query2, outputnya adalah kumpulan nilai
dari property StudentName. Dan untuk query3, outputnya adalah kumpulan
nilai dari property FacultyId.
Contoh sederhana implmentasi anonymous type dapat dilihat pada Kode 23.
Pada query4 dapat dilihat keyword new setelah select yang kemudian diikut
dengan tanya { } yang digunakan untuk membuat obyek baru. Pada obyek
baru tersebut terdapat dua property yaitu Upper yang diisi dengan nilai obyek
w diubah menjadi huruf besar dengan method ToUpper. Property kedua adalah
return list;
}
Console.WriteLine(s);
Cara ini langsung menulis obyek s tanpa menentukan property apa yang ingin
ditulis. Artinya seluruh property obyek s akan ditulis ke layar. Hasilnya adalah
sebagai berikut.
{ Nama = Budi, Fakultas = 1 }
{ Nama = Wati, Fakultas = 2 }
{ Nama = Iwan, Fakultas = 1 }
Console.WriteLine($"{s.Nama} {s.Fakultas}");
Untuk membuat output sebagai tuple, digunakan cara seperti pada Kode 25.
Jika pada anonymous type yang dicontohkan pada Kode 23 digunakan
keyword new dan tanda { } untuk membuat output dengan property baru.
Sedangkan untuk membuat tupple tidak diperlukan keyword new, cukup
dengan menggunakan tanda ( ) setelah keyword select.
return list;
}
Kode-kode yang dicontohkan pada sub bab ini dapat dilihat source code di
bagian BAB_03 > Projection_02.
using Projection_03;
return list;
}
Pada contoh kode di atas dapat dilihat keyword where digunakan setelah blok
from selesai. Artinya setelah rangkaian input dipilih dengan keyword form,
kemudian rangkaian input akan dapat difilter dengan menggunakan keyword
where diikut dengan kondisi yang diinginkan. Setelah itu baru rangkaian input
yang akan dikeluarkan sebagai rangkaian output dipilih.
Dari contoh terebut maka dapat secara umum query LINQ memiliki format
sebagai berikut.
from datum in data where condition select datum
return list;
}
Kedua contoh kode di atas dapat dilihat pada BAB_03 > Projection_04.
Contoh yang lain adalah dengan tambahan keyword where untuk melakukan
memberikan kondisi pada penggabungan rangkaian input seperti yang dapat
dilihat pada Kode 30.
Mengurutkan Elemen
Pada Kode 31 adalah contoh sederhana untuk mengurutkan kumpulan kata
dan angka yang disimpan pada array. Penggunaan keyword orderby dapat
dilihat pada query1 dan query2. Keyword orderby diletakkan setelah keyword
from dan sebelum keyword select.
Pada Kode 32 dapat dilihat query3 dimana setelah keyword orderby ditulis
property word.Length dari obyek data yang akan digunakan untuk melakukan
pengurutan. Hasil dari query ini dapat dilihat pada keluaran di bawah ini.
apple
cherry
blueberry
Kode ini akan melakukan koneksi ke database MySQL sehingga dapat dilihat
pada baris pertama penggunaan class-class dari namespace DataAccess.MySQL
dimana berisi class DbContext dan Model untuk operasi ke database MySQL.
Mengurutkan Menurun
Pada contoh di sub bab sebelumnya pengurutan dilakukan secara menaik dari
nilai terendah ke nilai tertinggi. Untuk melakukan pengurutan secara menurun
maka digunakan kata kunci decending setelah obyek atau property yang
digunakan sebagai parameter pengurutan.
Mengelompokkan Ke Keranjang
Berikut ini contoh pengelompokan data sederhana berdasarkan suatu operasi
terhadap data. Pada Kode 36, data atau rangkaian input adalah array yang
berisi integer dari obyek numbers.
Kemudian pada query1 dapat dilihat data dari obyek numbers disimpan ke
obyek n. Selanjutnya obyek n akan dikelompokkan (group n) berdasarkan
operasi modulus (by n % 2) yang hasilnya disimpan ke dalam obyek g (into
g). Selanjutnya rangkaian output adalah hasil pengelompokan ( select g) yang
disimpan ke obyek query1.
Contoh yang lain dapat dilihat pada Kode 37. Pada contoh ini saat membuat
rangkaian output dengan keyword select dilakukan penentukan nama
property output yaitu FirstLetter dan Words.
return list;
}
Generate Sequences
Quntifiying Members