En iyi yanıtlayıcılar
Datacache içinde filtreleme

Soru
-
Merhaba arkadaşlar bir site düşünün benzer sorguları 5-6 kez çekmek gerekiyor yani anasayfası için
select * from haberler where tur='d'
select * from haberler where tur='a'
select * from haberler where tur='c'
şeklinde yaptgımızda otomatik olarak 3 tane sql sorgusu cekiyoruz ben şimdi alternatik olsun diye hepsi için tek tek
Page.Cache.Insert("ui",tablo, null, DateTime.Now.AddMinutes(20), Cache.NoSlidingExpiration);
ile datacache olusturdum ama benim istediğim sadece bir defa
select * from haberler diye sql sorgusu cekip bunu cache atsam sonra bunun içindeki verilere göre istediğimi ceksem olur mu yada böyle birşey varmı ? sonucta boylece sadece 1 defa db den veri cekicem diger işlemler için cache kullanıcam
yok
Yanıtlar
-
Hatayı almanın sebebi where keywordunu kullanmış olman onu kullanmana gerek yok
RowFilter="kategori<>'d'";
Zaten datayı filtrelemek için yazılmış bir sınıf olduğu için where defaultda uygulanıyor.
Zaten datayı filtrelemek için dedik ya senin diğer yanlış kullanımlarına da değinip aslında Cache içinde DataTable değil GenericList tutup tüm işlemleri onun üzerinde yapabileceğini belirtelim
RowFilter ile Order by Yapamazsın.
Rowfilter ile limit kullanamazsın. O uygulanan filtrede ne kadar data varsa onu getirir.
List<MySinif> data=new List<Mysinif>(); data=loadData(); Page.Cache("ui",data,null,DateTime.Now.AddMinutes(20), Cache.NoSlidingExpiration); List<MySinif> CacheDekiList=Cache["ui"] as List<MySinif>; CacheDekiList.Where(p =>p.Kategori=='d' && p.etiket.Contains('incele')).OrderByDescending(z => z.id).Take(6).ToList();
- Düzenleyen Cengiz Gür 9 Mart 2013 Cumartesi 17:29
- Yanıt Olarak İşaretleyen Ali Rıza İnceoğlu 15 Mart 2013 Cuma 15:51
Tüm Yanıtlar
-
Cache içine DataTable attığını düşünürsek, Cache içinde ki DataTable dışarı çıkartıp onun üzerinde Filtre uygulayabilirsin.
DataTable dt= SQLData(); Page.Cache("ui",dt,null,DateTime.Now.AddMinutes(20), Cache.NoSlidingExpiration); DataTable CacheDekiTablo=Cache["ui"] as DataTable; CacheDekiTablo.DefaultView.RowFilter="tur='c'"; Repeater1.DataTable=CacheDekiTablo;
Yazım hatası olabilir, burda yazdım.
-
-
Birde dediğin şekilde uyarladım fakat row.filter sekmesine
where kategori<>'d' and onay='1' and ydurum='1' and etiket like '%incele%' order by id desc limit 6;
bunu yazınca
Missing operand after 'kategori' operator.
bu şekilde hata alıyorum bunu nasıl çözeriz ?
yok
-
Hatayı almanın sebebi where keywordunu kullanmış olman onu kullanmana gerek yok
RowFilter="kategori<>'d'";
Zaten datayı filtrelemek için yazılmış bir sınıf olduğu için where defaultda uygulanıyor.
Zaten datayı filtrelemek için dedik ya senin diğer yanlış kullanımlarına da değinip aslında Cache içinde DataTable değil GenericList tutup tüm işlemleri onun üzerinde yapabileceğini belirtelim
RowFilter ile Order by Yapamazsın.
Rowfilter ile limit kullanamazsın. O uygulanan filtrede ne kadar data varsa onu getirir.
List<MySinif> data=new List<Mysinif>(); data=loadData(); Page.Cache("ui",data,null,DateTime.Now.AddMinutes(20), Cache.NoSlidingExpiration); List<MySinif> CacheDekiList=Cache["ui"] as List<MySinif>; CacheDekiList.Where(p =>p.Kategori=='d' && p.etiket.Contains('incele')).OrderByDescending(z => z.id).Take(6).ToList();
- Düzenleyen Cengiz Gür 9 Mart 2013 Cumartesi 17:29
- Yanıt Olarak İşaretleyen Ali Rıza İnceoğlu 15 Mart 2013 Cuma 15:51
-
Peki hocam asp.net söyle bir olay varmı ?
Misal ben sql sorgusu ile son 100 kayıtı aktarsam ona ondan sonra onun üzerinde istediğim şekilde filtreleme filan yapsam ?
+
RowFilter kullandıgımızda limit olayını itemtemplate sekmesinde if ile filan halledebilirizde , order by olayına alternatif birşey varmı ?
Şimdiden yardımlarınız için çok teşekkür ederim
yok