2011-10-16 25 views
5

Bana yanıt almak için yığın taşmasıyla ilgili birçok ileti aradım ancak henüz açık değilim. Dinamik sorgular oluşturmanın basit bir yolunu arıyorum. Bir deyimdeki tek bir ifadeyi içeren basit sorgulamalar yapabildim ancak birden çok ifadeyi kullanmanın kolay bir yolunu bulamıyorum. Hızlı ve derleme zamanı güvenli sorgulama yapıları için çok kullanışlı olan NHibernate kriterleri API'sı ile çalışma deneyimim var. Ben benzer bir şey EntityFramework mevcut olacak ama bugüne kadar hayır şans. El ile dize sorguları oluşturmanın kolay yolu var mı? Çalışması gerektiğini düşündüm ama aşağıdaki kodları bir göz atın. Aslında birden fazla lambda ifadesi üzerine sorgu oluşturmuyor. Her bir aramanın, nerede ve ne için bir ifade ekleyeceğini tahmin ediyordum. Bir şey mi eksik?Dinamik SQL Sorgu Varlık Çerçevesi

var query = Entities.Current.Jobs.AsQueryable<Job>(); 

      if (!string.IsNullOrEmpty(keywords)) 
      { 
       query.Where(j => j.Title.Contains(keywords) || j.Description.Contains(keywords)); 
      } 

      if (industryId > 0) 
      { 
       query.Where(j => j.IndustryId == industryId); 
      } 

      if (countyId > 0) 
      { 
       query.Where(j => j.CountyId == countyId); 
      } 

      return query.ToList<Job>(); 

cevap

6

IQueryable değişmez olduğu; Mevcut bir IQueryable sorgusunu değiştiremezsiniz (doğrudan). query.Where, ek bir maddeyle birlikte yeni bir IQueryable döndürür.

Bu yeni IQueryable s ile hiçbir şey yapmıyorsunuz.

Sen yazmak gerekir

query = query.Where(...) 
+0

1 milisaniye beni yendi – Icarus