Forum
Merhabalar. Ben bir site yapıyorum aspNet ile. Ürünler adında bir tablom var. içinde ürün bilgilerini tutuyorum. ayrıca özelliklerinide tuttuğum bir tablo daha var. ürünler tablosuna OzellikID isimli bir hücreye chekbozlist ile özellikleri seçerek aralarına virgül atarak kaydediyorum. Yani OzellikID alanında 2,5,9,12, gibi ıdleri yazdırıyorum.
Sonrasında ürünler adındaki bir sayfada tüm ürünleri sağ kısımda, özelliklerin bulunduğu chekboxlistleri de sol kısımda bulunduruyorum. Chekboxlist te seçtiğim özellik yada özellikleri filtreleme yapmak istiyorum. bunun en kolay yolu Request ile yapmak diye düşündüm. örn: urunler.aspx?filter=2 gibi.
benim yazdığım kod öreneği aşağıdadır. herhangi bir request dönmediyse tüm ürünleri göstermek istiyorum. ama request olarak filter da bir id döndüyse ürünler tablosunda bulunan ozellikID kısmında bulunan virgülle ayrılmış ID leri parçalayıp requestten gelen değere eşit olan ürünleri göstermek istiyorum. yaptığım döngüde yanlışlık var. bana bu konuda yardımcı olursanız çok sevinirim.
lblUrun.Text = "";
string arama = "";
if (Request.QueryString["filter"] != null)
{
var uruncek = from i in db.tblUruns
where i.Durum == 1
select i;
for (int i = 0; i < uruncek.Count(); i++)
{
foreach (var item in uruncek)
{
string[] dizi = item.OzellikID.Split(',');
for (int k = 0; k < dizi.Length; k++)
{
arama = Request.QueryString["filter"];
if (dizi[k] == arama)
{
var urun = from m in db.tblUruns
where m.Durum == 1
select m;
if (urun.Count() < 1)
{
lblUrun.Text = "Aradığınız ürün bulunamadı!";
}
else
{
foreach (var x in urun)
{
if (!IsPostBack)
{
lblUrun.Text += x.Baslik + "<br>";
}
}
}
}
}
}
}
}
else
{
var urun = from i in db.tblUruns
where i.Durum == 1
select i;
foreach (var x in urun)
{
lblUrun.Text += x.Baslik + "<br>";
}
}
Teşekkür ederim.
Gördüğüm ilk sorun "uruncek" isimli koleksiyona iki defa döngü kurmanız;
for (int i = 0; i < uruncek.Count(); i++) // 1
{
foreach (var item in uruncek) // 2
Ayrıca "uruncek" koleksiyonu zaten alınmış durumda, döngü içerisinde aşağıdaki sorguyu çalıştırmanıza gerek yok;
var urun = from m in db.tblUruns
where m.Durum == 1
select m;
Bu uyarıları göz önüne alarak kodunuzu sadeleştirmeyi deneyin.