Mantık şu:
1 - Koşuluna uygun toplam kaç kayıt var (Örnek: 23)
2 - Koşuluna uygun kaydın bütün listesini veren sorgu: ({1, Ali, İnal}, {2, Osman, Maltaş}, {3, Koray, Cingöz},...{23, Serkan, Usta})
Peki bize bunlar ne için lazım. Toplam 23 kayıt var ve biz her sayfa 10 kayıt olmak üzere kaç tane sayfa göstereceğiz? Kod biraz karmaşık gelebilir fakat bunun kısa hali şöyle: Elimde x koşulu var sorguyu x'e göre filtrele. Elimde y koşulu var sorguyu y'ye göre filtrele. Daha da ilerisi elimde hem x hem de y var o zaman sorguyu hem x'e hem de y'e göre filtrele. Diyoruz kısaca.
public long fnToplam_Kayit(string strKelime, Guid? gdUst_Menu_ID_FK, Guid? gdDil_ID_FK, Guid? gdMenu_Yer_ID_FK, sbyte? sbDurum)
{
long lngSonuc = 0;
using (DB_CDIYS_MYSQL db = new DB_CDIYS_MYSQL())
{
string strSorgu = " SELECT COUNT(B.ID) FROM CDIYS_tblMenuler AS A INNER JOIN CDIYS_tblMenuler_ve_Diller AS B ON A.menu_ID = B.menu_ID_FK INNER JOIN IYS_tblMenu_Yerleri AS C ON A.menu_yer_ID_FK = C.menu_yer_ID WHERE 1=1";
if (!string.IsNullOrEmpty(strKelime))
strSorgu += " AND (B.menu LIKE '%" + strKelime + "%' OR C.kod LIKE '%" + strKelime + "%' OR C.yer LIKE '%" + strKelime + "%')";
if (gdUst_Menu_ID_FK != null)
strSorgu += " AND (A.ust_menu_ID_FK = '" + gdUst_Menu_ID_FK + "')";
if (gdDil_ID_FK != null)
strSorgu += " AND (B.dil_ID_FK = '" + gdDil_ID_FK + "')";
if (gdMenu_Yer_ID_FK != null)
strSorgu += " AND (A.menu_yer_ID_FK = '" + gdMenu_Yer_ID_FK + "')";
if (sbDurum == 0 || sbDurum == 1)
strSorgu += " AND B.durum = " + sbDurum;
lngSonuc = db.Database.SqlQuery(strSorgu).First();
};
return lngSonuc;
}
public List fnSayfala(string strKelime, Guid? gdDil_ID_FK, byte? bytDurum, long? lngBaslangic_Degeri, int? intGosterim_Adeti)
{
List liste = new List();
using (DB_CDIYS_MYSQL db = new DB_CDIYS_MYSQL())
{
string strSorgu = " SELECT * FROM CDIYS_tblMenuler_ve_Diller WHERE 1=1";
if (!string.IsNullOrEmpty(strKelime))
strSorgu += " AND (menu LIKE '%" + strKelime + "%' OR harici_baglanti LIKE '%" + strKelime + "%')";
if (gdDil_ID_FK != null)
strSorgu += " AND dil_ID_FK = '" + gdDil_ID_FK + "'";
if (bytDurum == 0 || bytDurum == 1)
strSorgu += " AND durum = " + bytDurum;
strSorgu += " ORDER BY menu_ID_FK DESC, dil_ID_FK DESC, sira ASC";
if (lngBaslangic_Degeri != null)
strSorgu += " LIMIT " + lngBaslangic_Degeri;
if (intGosterim_Adeti != null)
strSorgu += ", " + intGosterim_Adeti;
liste = db.Database.SqlQuery(strSorgu).ToList();
};
return liste;
}