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ı:
Ü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!
Comments 0