ENTITY FRAMEWORK ILE BIR TABLODAKI EN ÇOK TEKRAR EDEN KAYITLAR NASIL BULUNUR


Merhaba arkadaşlar bu makalemde entity frame work’te bir tablodaki en çok tekrar eden 5 kaydı getirmeyi anlatacağım.

Yaptığım bir e-ticaret işimde raporlama kısmında lazım olmuştu makale haline getirdim.

Örnek: Verilen sipariş ürünlerinden en çok sipariş verilen ürünleri ve bunların sayısını büyükten küçüğe sıralayıp liste halinde veren sorgu.

Veritabanı tabloları
1) siparisler
2) siparis_urunleri (siparis_id Foreign Key ile siparisler tablosuna bağlı, urun_id Foreign Key ile urunler tablosuna bağlı)
3) urunler
Sorgu:


siteEntites db = new siteEntities();
var results = db.siparis_urunler.GroupBy(g => g.urun_id).Where(w => w.Count()>1)
.Select(s =>
new {
s.FirstOrDefault().urunler.urun_adi,
adet = s.Count()
}).Distinct().Take(5).OrderByDesceding(o=>o.adet).ToList();

Çıktısı:

 

En Çok Sipariş Verilen 5 Ürün
Ürün Adı Adet
Flash Bellek 50
CD 42
Usb Kablo 33
Monitör 20
Hoparlör 15

Adımlar

1) Önce verilerimi GrupBy ile urun_id ye göre grupluyorum
2) Tekrar eden dediğimiz için Where ile sayısı 1 den fazla olanları filtreliyorum
3) FirstOrDefault diyerek urunler tablosuna çıkıp ürünün adını alıyorum
4) Grupladığım ürünün sayısını alıyorum
5) Büyükten küçüğe sıralıyorum

İyi Kodlar!

 

Share Button

Comments 0

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

* Copy This Password *

* Type Or Paste Password Here *

12.695 Spam Comments Blocked so far by Spam Free Wordpress

More From: Asp.NET

DON'T MISS