आप Expression
कि IQueryable<T>
कार्यान्वयन पर Expression
property से दिया जाता है पार्स करने के लिए करना होगा नहीं है है कि जरूरत है ।
आप Queryable.Where
method के लिए क्वेरी करने के लिए बुलाया जा रहा है के रूप में आप Expression
पेड़ क्रॉल होगा।
यह भी ध्यान रखें कि जब तक Queryable.Where
सबसे आम तरीका एक where
फिल्टर पता लगाने के लिए होने जा रहा है, क्वेरी सिंटैक्स अन्य कार्यान्वयन के लिए (क्या नामस्थान using
directives में किया जाता है पर निर्भर करता है) का इस्तेमाल किया जा करने की अनुमति देता अगर आपके पास ऐसा कुछ है जो Queryable.Where
एक्सटेंशन विधि का उपयोग नहीं कर रहा है तो आपको उस स्पष्ट रूप से देखना होगा (या Where
विधि के लिए फ़िल्टरिंग की एक और सामान्य विधि का उपयोग करना होगा जो IQueryable<T>
लेता है और IQueryable<T>
देता है)।
ExpressionVisitor
class (pointed out by xanatos के रूप में) Expression
पेड़ रेंगने की एक बहुत ही आसान तरीका प्रदान करता है, मैं अत्यधिक अपने Expression
पेड़ के प्रसंस्करण के लिए एक आधार के रूप कि दृष्टिकोण का उपयोग करें।
ध्यान दें कि ExpressionVisitor
वर्ग कार्यान्वयन कक्षा स्तर पर राज्य को स्टोर और बेनकाब करने की आवश्यकता है। इसके कारण, आंतरिक कक्षाओं को बनाने के लिए यह सर्वोत्तम होगा (आईएमओ) जो एक बार कार्रवाई करते हैं और फिर एक सार्वजनिक विधि है जो हर बार ExpressionVisitor
का एक नया उदाहरण बनाता है; इससे उत्परिवर्तनीय स्थिति से निपटने में मदद मिलेगी, और यदि सही तरीके से किया जाता है, तो विधि को थ्रेड-सुरक्षित भी होने की अनुमति होगी (यदि यह आपकी चिंता है)।
क्यों? अधिक संदर्भ देने से –