Linq Expression Join İşlemleri Group By ve Order By Kullanımı
Sinan Arslan
02:51
Linq Expression Order By Kullanımı
,
Linq Expression Group By
,
Linq Expression Join İşlemleri
Hiç yorum yok
Merhaba ArkadaşlarBu bölümde linq expression larda join işlemi kullanımına bakıyor olacağız.Yazağımız uygulama genel anlamda çoklu tablolar arasındaki ilişkilerden yararlanıp bunları linq ile tek sorgu haline getirip datagridviewımızda listelemek olacak.
Yazmış olduğum proje üzerinden devam ederek kodları ve uygulamayı paylaşıyor olacağım. Veri Tabanı olarak KuzeyYelini kullanarak ilerledim.Uygulama içine Model adında bir klasör açıp add new item ile linq to sql classes ekleyip devam edelim ve global olarak eklemiş olduğumuz context nesnemizden instance alıp devam edelim
KuzeyYeliDataContext db = new KuzeyYeliDataContext();
private void btnCoklu_Click(object sender, EventArgs e)
{
// Önemli Not join işlemlerinde ilk olarak ilk çağırılan tablonun kolonu ile eşleştirme yapılır
lblSorgu.Text = "";
lblSorgu.Text = "Satışı yapılan ürünü hangi personel satmış ad ve soyadı,hangi Musteri ye satmış,satış fiyatı,urun adi,kategori adı,indirim oranı gelsin";
dgvSonuc.DataSource = from urun in db.Products
join kat in db.Categories on urun.CategoryID equals kat.CategoryID
join satisdetay in db.Order_Details on urun.ProductID equals satisdetay.ProductID
join satis in db.Orders on satisdetay.OrderID equals satis.OrderID
join musteri in db.Customers on satis.CustomerID equals musteri.CustomerID
join personel in db.Employees on satis.EmployeeID equals personel.EmployeeID
join teadrikci in db.Suppliers on urun.SupplierID equals teadrikci.SupplierID
select new
{
UrunAdi = urun.ProductName,
Fiyat = urun.UnitPrice,
SatisFiyat = satisdetay.UnitPrice,
Adet = satisdetay.Quantity,
Indirim = satisdetay.Discount,
Tedarikci = teadrikci.CompanyName,
KategoriAd = kat.CategoryName,
Musteri = musteri.CompanyName,
Personel = personel.FirstName + "- " + personel.LastName,
};
}
private void btniki_Click(object sender, EventArgs e)
{
/*Urunler tabloasundaki kategorileri aynı olan ürünler gelsin*/
lblSorgu.Text = "";
lblSorgu.Text = "Urunler tabloasundaki kategorileri aynı olan ürünler gelsin";
dgvSonuc.DataSource = from urun in db.Products
join kat in db.Categories on urun.CategoryID equals kat.CategoryID
select new
{
urun.ProductName,
kat.CategoryName,
urun.UnitsInStock,
urun.UnitPrice
};
}
lblSorgu.Text = "";
/*hangi üründen Nekadar toplam Satış geliri elde edilmiş*/
lblSorgu.Text = "hangi üründen Nekadar toplam Satış geliri elde edilmiş";
var sorgu = from urun in db.Products
join satisdetay in db.Order_Details on urun.ProductID equals satisdetay.ProductID
group satisdetay by urun.ProductName into grup //ürünler tablosundaki urunadina göre grupla
select new
{
UrunAdi = grup.Key, //grupladığımız alan adını key ifade eder
ToplamSatis = grup.Sum(x => x.UnitPrice * x.Quantity)
};
dgvSonuc.DataSource = sorgu;
/*yapılan işlemin t-sql sorgusu
Select ProductName,Sum(satisdetay.Quantity*satisdetay.UnitPrice) as ToplamSatis from Products urun
join [Order Details] satisdetay on urun.ProductID=satisdetay.ProductID
group by urun.ProductName
======!!!!!!!!Önemli!!!=======
Yukarda dikkat edilmesi gereken group by urun.ProductName ifadesi t-sql sorgusunda Select deyiminden hemen sonra ProductName gelmektedir.Yani bizim yazdığımız linq expressionlarda group by ifadesindeki Key 'i ifade etmektedir
*/
private void btnOrderBy_Click(object sender, EventArgs e)
{
lblSorgu.Text = "";
lblSorgu.Text = "Fiayata Az' dan Çoğa Göre Ürunleri Sırala";
var sorgu = from urun in db.Products
orderby urun.UnitPrice
select urun;
dgvSonuc.DataSource = sorgu;
}
private void button2_Click(object sender, EventArgs e)
{
lblSorgu.Text = "";
lblSorgu.Text = "Fiayata Çoktan Az'a Göre Ürunleri Sırala";
var sorgu = from urun in db.Products
join kategori in db.Categories on urun.CategoryID equals kategori.CategoryID
join tedarikci in db.Suppliers on urun.SupplierID equals tedarikci.SupplierID
orderby urun.UnitPrice descending
select new
{
urun.ProductName,
KategoriAdi = kategori.CategoryName,
Tedarikci = tedarikci.CompanyName,
UrunFiyat = urun.UnitPrice,
Adet = urun.UnitsInStock,
};
dgvSonuc.DataSource = sorgu;
}
private void button3_Click(object sender, EventArgs e)
{
//burda istenilen alanları çekmek için tablolar arası join işlemlerinden sonra select keyword unden scopelarında ilgili alanları çekebilirsiniz.
//Ben yukarda benzer örneği yaptığım için bu kısmı yazmadım
lblSorgu.Text = "";
lblSorgu.Text = "Satış Tarihine Göre Satışları Tersten Sırala ";
var sorgu = from satis in db.Orders
orderby satis.OrderDate descending
select satis;
dgvSonuc.DataSource = sorgu;
}
private void button4_Click(object sender, EventArgs e)
{
lblSorgu.Text = "";
lblSorgu.Text = "Verilen Tarihe Göre Dataları Sırala ";
DateTime tarih = Convert.ToDateTime(maskedTextBox1.Text);
var sorgu = from satis in db.Orders
where satis.OrderDate == tarih
select satis;
dgvSonuc.DataSource = sorgu;
}
Umarım faydalı olur.Örnek Proje İndir
Kaydol:
Kayıt Yorumları
(
Atom
)
Hiç yorum yok :
Yorum Gönder
Soru Görüş önerileriniz için gmail plus üzerinden + layın müsait olduğumda mutlaka yanıt dönüyor olacağım.