2011-10-16 15 views
5

मैंने मुझे जवाब देने के लिए स्टैक ओवरफ़्लो पर कई पोस्ट खोजे लेकिन मैं अभी तक स्पष्ट नहीं हूं। मैं गतिशील प्रश्नों को बनाने के लिए बस कुछ आसान तरीका ढूंढ रहा हूं। मैं क्लॉज में एकल अभिव्यक्ति को शामिल करने में सरल प्रश्न करने में सक्षम था लेकिन मुझे एकाधिक अभिव्यक्तियों को संभालने का कोई आसान तरीका नहीं मिला। मुझे एनएचबीर्नेट मापदंड एपीआई के साथ काम करने का अनुभव है जो तेजी से और संकलित समय सुरक्षित क्वेरी निर्माण के लिए बहुत आसान है। हालांकि मैं कुछ इसी तरह EntityFramework पर उपलब्ध होगा लेकिन अब तक कोई भाग्य नहीं है। मैन्युअल रूप से स्ट्रिंग क्वेरी बनाने के अलावा कोई आसान तरीका है? निम्नलिखित कोड पर एक नज़र डालें, मैंने सोचा कि इसे काम करना चाहिए लेकिन ऐसा नहीं है। वास्तव में यह एकाधिक लैम्ब्डा अभिव्यक्तियों पर क्वेरी नहीं बनाता है। मैं उम्मीद कर रहा था कि प्रत्येक कॉल कहां से एक और अभिव्यक्ति को जोड़ देगा। क्या मैं कुछ भूल रहा हूँ ?गतिशील एसक्यूएल क्वेरी इकाई फ्रेमवर्क

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>(); 

उत्तर

6

IQueryable अपरिवर्तनीय है; आप मौजूदा IQueryable की क्वेरी को संशोधित नहीं कर सकते (सीधे)। query.Where एक अतिरिक्त जहां खंड के साथ एक नया IQueryable देता है।

आप इन नए IQueryable एस के साथ कुछ भी नहीं कर रहे हैं।

आप लिखने की ज़रूरत

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

1 मिलीसेकंड के लिए मुझे मारो – Icarus

संबंधित मुद्दे