में गतिशील रूप से "या" LIKE क्वेरी का निर्माण करें मेरे पास एक LINQ क्वेरी है जो किसी अज्ञात ऑब्जेक्ट द्वारा बनाई गई है।LINQ से SQL
किसी दिए गए बिंदु पर, मैं आने वाले खोज पैरामीटर द्वारा परिणामों को सीमित करना चाहता हूं, लेकिन यह एक या अधिक पैरामीटर हो सकता है, और मैं उन लोगों का उपयोग करके "जैसे x या पसंद या या ज़ेड" करना चाहता हूं।
कोड में, यह इस तरह दिखेगा:
reservations = reservations.Where(r =>
r.GuestLastName.Contains(parameter1) || r.GuestFirstName.Contains(parameter1) ||
r.GuestLastName.Contains(parameter2) || r.GuestFirstName.Contains(parameter2) ||
// Parameter 3, 4, 5,..
);
मैं इस गतिशील रूप से निर्माण कर सकता है, जानते हुए भी कि reservations
प्रकार IQueryable<'a> (anonymous object)
की है? मैंने विभिन्न संसाधनों पर चारों ओर देखा है और मुझे लगता है कि जब मैं अज्ञात प्रकारों का उपयोग नहीं करता हूं, तो मुझे ऐसा करने का कोई तरीका मिल सकता है।
यह पता चला है कि यह एसक्यूएल को Linq है महत्वपूर्ण है, तो यह एक SQL क्वेरी करने के लिए अनुवाद किया जाना चाहिए और स्मृति में फ़िल्टर किया जा नहीं ...
इस समाधान के लिए आपको फ़ंक्शन हस्ताक्षर में लैम्ब्डा अभिव्यक्तियों को पार करने की आवश्यकता है। जहां तक मैं आपका प्रश्न समझ गया, आपकी आवश्यकता उन्हें गतिशील रूप से बनाना था। उदाहरण के तौर पर, वेब वातावरण में जीईटी अनुरोध के परिणामस्वरूप आपके पास एक कार्रवाई की गई है। क्वेरी पैरामीटर में गुणों को फ़िल्टर करने के लिए नाम उनके संभावित मानों के साथ सर्वर को भेजते हैं। आपके मामले में, आपको फ़िल्टर फ़ंक्शन पर आगे जाने के बजाय, क्लाइंट से प्राप्त गुणों के आधार पर लैम्ब्डा अभिव्यक्तियों को बनाने के लिए मजबूर होना पड़ता है। – jwaliszko