Anda di halaman 1dari 10

LINQ

Apa itu LINQ ?

LINQ kepanjangan dari Language Integrated Query adalah keyword baru pada C# dan VB yang
diperkenalkan pada .NET versi 3.5. LINQ berupa query expression seperti from, where, select yg biasa
ditemui pada bahasa SQL. Dengan menggunakan LINQ dapat melakukan query ke berbagai macam data
seperti ke database SQL Server (LINQ to SQL), ke object DataSet (LINQ to DataSet), ke entity (LINQ to
Entity Framework), data XML (LINQ to XML) dan masih banyak lagi. Jadi dengan LINQ kita lebih
mudah mengquery suatu data (baik database maupun data dalam array atau koleksi dari objek)
menggunakan keyword yang sudah disediakan. Keyword query operator yang dapat digunakan dalam
LINQ kira-kira ada 40 macam. Sebelum ada LINQ untuk mengakses objek-objek seperti array, koleksi,
database, dan XML anda membutuhkan teknik sendiri, misal untuk mengakses database anda harus
menggunakan bahasa SQL, untuk mengakses XML digunakan XPath atau XQuery tapi dengan
menggunakan LINQ objek yang berbeda-beda tersebut dapat di query dengan teknik yang sama yaitu
LINQ.

Akses data dengan LINQ


Contoh untu menakses data menggunakan LinQ dapat di implementasikan apada source code dibawah ini
yang bertujuan untuk menampilkan pesan manajemen kepada banyak pengguna, dan didalamnya berisi
Linq untuk kelas data akses sql.berikut source codenya:
var messages =
from detail in db.mesagedetails
where detail.userID == (int)Session["userID"]
where detail.message.ispublished
where detail.message.messagecategoryID == categoryIDFilter || (categoryIDFilter ==0)
where detail.isread == false || showread || detail.readdate.value.date == datetime.today
orderby detail.mjessage.publishdate descending
group detail by detail.message,messagecategory inti categories
orderby categories.key name
select new
{
messagecategory = categories.key,
messagedetails = categories.select(d => d)
};
e.result = messages;
source code diatas bermaksud untuk menampil;kan detail pesan join table yang juga berisi sebuah tanda
baca. Daftar pesan dikelompokan berdasarkan kategori yang memiliki dua bersarang pada halaman. Satu
output nama group, sedangkan yang kedua bersarang di dalam yng terikat detail pesan dan output pesan
sendiri.
Stored Procedure Linq To SQL
Object stored procedure yang disimpan didalam Linq To SQL akan di mapping
menjadi method di dalam DataContext class. Untuk eksekusi stored procedure di dalam
Linq To SQL maka kita cukup memanggil method tersebut lewat DataContext
instance class.
Berikut adalah contoh eksekusi stored procedure CustOrderHist yang telah
dimasukkan kedalam DataContext class lewat O/R Linq To SQL designer :
1. Tambahkan button ke dalam form yang sama, beri nama
btnGetDataSP dan tambahkan kode berikut pada event
click :
Private Sub btnGetDataSP_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles btnGetDataSP.Click
ListBox1.Items.Clear()

Dim custOrders As System.Data.Linq.ISingleResult(Of CustOrderHistResult) = Nothing

db.Log = Console.Out
ListBox1.Items.Add("Order History for Alfki") ListBox1.Items.Add(New
String("="c, 30))

Try
custOrders = db.CustOrderHist("Alfki")

For Each item In custOrders


ListBox1.Items.Add(item.ProductName &" : " _ & item.Total.Value.ToString)
Next
Catch sqlEx As SqlException
MessageBox.Show(sqlEx.ToString) Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try

End Sub

Stored procedure yang terdapat didalam database di mapping menjadi sebuah fungsi yang
mengembalikan nilai berupa ISingleResult. Kode yang digunakan untuk eksekusi fungsi tersebut
diatas menggunakan variabel db yang merupakan instance dari DataContext yang telah
didefinisikan pada lab sebelumnya sebagai class level variabel.
Report data dengan LINQ

Step 1 : Design Form seperti dibawah ini

Step 2 : Dari Menu View pilih Server Explorer seperti gambar dibawah ini

Step 3 : Dari Server Explorer pilih Icon Connect to Database


Step 4 : Pilih Microsoft SQL Server

Step 5 : Isikan data login ke SQL Server


Step 6 : Setelah data login dimasukkan akan tampil semua objek(tabel)
Step 7 : Dari Menu Project pilih Add New Item

Step 8 : Pilih LINQ to SQL Class dan ketik nama LINQ nya seperti gambar dibawah ini

Step 9 : Dari Server Explorer, seret tabel yang diinginkan seperti gambar dibawah ini
Step 10 : Tulislah kode seperti dibawah ini

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace LINQ
{
public partial class Form1 : Form
{
NorthwindLINQDataContext db = new NorthwindLINQDataContext();
Category cat = new Category();

public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)


{
var sql = from category in db.Categories
select category;
dataGridView1.DataSource = sql;
}

private void buttonNew_Click(object sender, EventArgs e)


{
textBox1.Text = "";
textBox2.Text = "";
textBox3.Text = "";
pictureBox1.Image = null;

private void buttonSave_Click(object sender, EventArgs e)


{
System.IO.MemoryStream ms = new System.IO.MemoryStream();
pictureBox1.Image.Save(ms, pictureBox1.Image.RawFormat);
byte[] arrPicture = ms.GetBuffer();
ms.Close();

cat.CategoryName = textBox1.Text;
cat.Description = textBox2.Text;
cat.Picture = arrPicture;

db.Categories.InsertOnSubmit(cat);
db.SubmitChanges();
}

private void buttonUpdate_Click(object sender, EventArgs e)


{
System.IO.MemoryStream ms = new System.IO.MemoryStream();
pictureBox1.Image.Save(ms, pictureBox1.Image.RawFormat);
byte[] arrPicture = ms.GetBuffer();
ms.Close();

int kode = Convert.ToInt32(dataGridView1[0,


dataGridView1.CurrentRow.Index].Value.ToString());

var sql = (from tbl in db.Categories


where tbl.CategoryID == kode
select tbl).First();

sql.CategoryName = textBox1.Text;
sql.Description = textBox2.Text;
sql.Picture = arrPicture;

db.SubmitChanges();
}

private void buttonDelete_Click(object sender, EventArgs e)


{
int kode = Convert.ToInt32(dataGridView1[0,
dataGridView1.CurrentRow.Index].Value.ToString());
var sql = (from tbl in db.Categories
where tbl.CategoryID == kode
select tbl);
db.Categories.DeleteAllOnSubmit(sql);
db.SubmitChanges();
}

private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)


{
openFileDialog1.Title = "Picture";
openFileDialog1.Filter = "BMP(*.bmp)|*.bmp|JPG(*.jpg)|*.jpg|GIF(*.gif)|*.gif";
openFileDialog1.FilterIndex = 2;
if (openFileDialog1.ShowDialog()==DialogResult.OK)
{
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
pictureBox1.Image = Image.FromFile(openFileDialog1.FileName);
}
}

//apabila grid di double klik maka datanya akan ditampilkan dlm textbox
private void dataGridView1_DoubleClick(object sender, EventArgs e)
{

textBox1.Text = dataGridView1.CurrentRow.Cells[0].Value.ToString();
textBox2.Text = dataGridView1.CurrentRow.Cells[1].Value.ToString();
textBox3.Text = dataGridView1.CurrentRow.Cells[2].Value.ToString();

byte[] pict = (byte[])dataGridView1.CurrentRow.Cells[3].Value;


System.IO.MemoryStream ms = new System.IO.MemoryStream(pict);

pictureBox1.Image = Image.FromStream(ms);
}
}
}

Catatan Tambahan :

Supaya DataGridView bisa menampilkan gambar yang ada dalam tabel, harus di ganti dulu type

datanya (kolom Picture) yang ada di tabel, caranya : klik kolom picture seperti gambar dibawah
ini :
Gantilah type datanya pada Properties seperti gambar dibawah ini :