Entity Framework ile veri tabanındaki önceki ve sonraki makaleyi almak

Merhaba arkadaşlar bu makale nerdeyse her makale paylaşan sitede gördüğünüz bir olayı anlatmaya çalışcağım. Bir makalenin detayına girdiğimizde ok'larla ya da önceki ve sonraki şeklinde linkler kullanılarak şu anda bulunduğunuz makale' den önceki ya da sonraki makalelere yönlenmemizi sağlayan linklerle karşılaşırsınız. Şu an okuduğunuz bu makalenin detayında da bu mevcuttur. :) Alt tarafta facebook yorum alanının alt kısmında önceki ve sonraki şeklinde bulunan alanlardır. Bu makale bunu anlatmak istiyorum. Ve bunu yaparken de Entity Framework kullanacağım..

Bunun için 1 method yazdım..

siteEntities db = new  siteEntities(); // Veritabanı model örneğimiz

public  makale GetPrevNextMakale(int currentID,bool isOnceki)

{

if(isOnceki) //Eğer önceki satırı istiyorsak
         //Lambda sorgusuyla bulunduğumuz makale id'sinden küçük makalelerden id'ye göre tersten sıralayarak bir önceki makaleyi alıyoruz.
          var oncekiSatir = db.makale.Where(i => i.id <  currentID).OrderByDescending(o=>o.id).Take(1).FirstOrDefault();
            
          return oncekiSatir;
 
}
else //Önceki satırı istemiyorsak
{
          //Lambda sorgusuyla bulunduğumuz makale id'sinden büyük hemen sonraki makaleyi alıyoruz.
          var sonrakiSatir = db.makale.Where(i => i.id > currentID).Take(1).FirstOrDefault();
            
          return sonrakiSatir;
 
}
 
}
 
 
Kullanımı ise...
makele mOnceki = MethotClass.GetPrevNextMakale(okunanMakaleIDsi,true);
makele mSonraki = MethotClass.GetPrevNextMakale(okunanMakaleIDsi,false);
 
Buradan mOnceki ve mSonraki değerleri methodun dönüşüne göre null gelebilir.
Kullanırken null olup olmadığını kontrol etmemiz gerekiyor.
 
if(mOnceki !=null)
  ltrGeriLink.Text="<a href='makale.aspx?id="+m.makaleid+"'>Önceki</a>";
else
  ltrGeriLink.Text="<a href='javascript:void(0)'>Önceki</a>";
 
if(mSonraki !=null)
  ltrSonrakiLink.Text="<a href='makale.aspx?id="+mSonraki.makaleid+"'>Sonraki</a>";
else
  ltrSonrakiLink.Text="<a href='javascript:void(0)'>Sonraki</a>
 
Makalede kullandığımız Lambda terimleri.
 
Where: Gelen veri kümesine şart koşmak için kullanılır.
Take: Gelen veri kümesinden sadece istediğimiz sayı olanları almak için kullanılır.
OrderByDescending: Gelen veri kümesini belirlediğimiz bir kritere göre büyükten küçüğe doğru sıralamaya yarar.
FirstOrDefault: Gelen veri kümesinin sadece ilk satırını bize döndürür.
 
İyi Kodlar!