Arama butonu
Bu konudaki kullanıcılar: 1 misafir
2
Cevap
330
Tıklama
0
Öne Çıkarma
Entity Framework link sorgusunda filter manipule
C
12 yıl
Yüzbaşı
Konu Sahibi

Merhaba arkadaşlar sıkıntılı bir konu ile karşı karşıyayım bir açık artırma sitesi için asp.net mvc5 ile uygulama geliştiriyorum ve şöyle bir durum söz konusu listelenen verilerin tipi hep aynı ama koşula göre değişiyor mesala x Action ında kategorisi 5 olanları listeliyorum y Action üzerinde kategorisi 7 olanları listeliyorum ve bunların postback methodlarında filtreleme var
onun için bir method yazdım benim istediğim şu gerekli koşulu methoda parametre olarak geçeyim ve herhangi bir şekilde if in içine girildiği zaman o koşulu manipule edip ek koşullar eklemek istiyorum. Şu şekilde

Action

 
var sonuc =
SiralamaSonucGetir(
Arac =>
Arac.SehirID == aramamodel.SehirID && Arac.AracKategoriID == 1 && Arac.IhaleBitis > DateTime.Now &&
Arac.GizliMi == false && Arac.OnlineDurum == true, aramamodel, siralamadurum, page);
return View(sonuc);


Methodun bir koşuluda böyle mesela

 
if (aramamodel.SehirID != 0)
{
//var sehregoresorgu = sorgu.Where(a => a.SehirID == aramamodel.SehirID && filter).OrderBy(a => a.IhaleBitis)
var sehregoresorgu = RpstryArc.SelectSomeWithPage
(
x => new AracListModel
{
AracID = x.AracID,
Resim = x.Resim,
RuhsatDurum = x.RuhsatDurum,
SehirID = x.SehirID,
BaslangicFiyat = x.BaslangicFiyat,
IhaleBitis = x.IhaleBitis,
AracTipi = x.AracTipi,
}, 4, 1, filter //Buraya bir adet daha koşul gelmeli,
x => x.IhaleBitis);
return sehregoresorgu;
}


method üzerinde istediğim parametreler

 
public IPagedList<AracListModel> SiralamaSonucGetir(Expression<Func<Arac, bool>> filter,
SearchTypes aramamodel, string siralamadurum,int? page)


repostory üzerinden gelen listeye ek bir koşul ekleyince IPagedList yapısı bozuluyor yani o filter değişkenini bir şekilde manipule edip varolankoşullar + yeni koşulum yapmak istiyorum
.Update() methodunu denedim ama o varolan koşulu uçuruyor.

Şuan repostorymi değiştirdim oradan döndürüyorum. ama bu şekilde yaparsam daha sağlıklı olur diye düşünüyorum.

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil





< Bu mesaj bu kişi tarafından değiştirildi converttoint32 -- 29 Ocak 2014; 13:02:52 >

F
12 yıl
Binbaşı

Selamun aleykum dostum,

Expression combine, dynamically expression create vs.. şeklinde aratınca google'da sonuçlar geliyor. Ben inan denemedim, şunu denemiştim :http://dynamiclinq.codeplex.com/ (Entity Framework code first ile çalışmıştı)

Şu fena değil gibi :http://www.albahari.com/nutshell/predicatebuilder.aspx

Şöyle de kullanımı var :

var inner = PredicateBuilder.False<Product>(); 
inner = inner.Or (p => p.Description.Contains ("foo"));
inner = inner.Or (p => p.Description.Contains ("far"));

var outer = PredicateBuilder.True<Product>();
outer = outer.And (p => p.Price > 100);
outer = outer.And (p => p.Price < 1000);
outer = outer.And (inner);


Bu mesaja 1 cevap geldi.
C
12 yıl
Yüzbaşı
Konu Sahibi

Sağol dostum çok yardımcı oldun en kısa zamanda deniyeceğim

Entity framework un en büyük sıkıntısı bu bence ado.net te daya koşulu stringe ekle topla böl çıkar gönder sonuç gelsin




Bu mesajda bahsedilenler: @Finney
DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.