Entity Framework ile bir tablodaki en çok tekrar eden kayıtlar nasıl 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!
 

Yorumlar