2010-05-14 17 views
7

पर एसक्यूएल कथन मैं सोच रहा हूं कि एक अभिव्यक्ति वृक्ष में एक एसक्यूएल स्ट्रिंग का अनुवाद कैसे करेगा। वर्तमान में, लिंक से एसक्यूएल में, अभिव्यक्ति पेड़ को एक एसक्यूएल कथन में अनुवादित किया गया है। दूसरी तरफ कैसे जाता है? आपअभिव्यक्ति वृक्ष

select * from books where bookname like '%The%' and year > 2008 

सी # में अभिव्यक्ति वृक्ष में अनुवाद कैसे करेंगे?

+0

क्या आपको इस प्रश्न के लिए कोई समाधान मिला। मुझे C# – Saravanan

उत्तर

0

http://weblogs.asp.net/rajbk/archive/2007/09/18/dynamic-string-based-queries-in-linq.aspx

अद्यतन

इकाई की रूपरेखा इकाई एसक्यूएल भाषा है। निश्चित नहीं है कि यद्यपि आप यही चाहते हैं।

http://msdn.microsoft.com/en-us/library/bb738521.aspx

+0

में एक एसक्यूएल स्ट्रिंग से अभिव्यक्ति वृक्ष प्राप्त करने की आवश्यकता भी है ... ठीक है। डायनेमिक लिंक आपको स्ट्रिंग के रूप में अपने linq lambda अभिव्यक्ति तर्क निर्दिष्ट करने की अनुमति देता है, लेकिन आपको अभी भी अपने linq कथन के विस्तार विधियों (चयन, .Where) निर्दिष्ट करना होगा। –

+0

गतिशील linq का उपयोग नहीं करना अच्छा होगा लेकिन पूरी तरह से System.Linq.Expressions से बनाया गया है –

0

मैं वहाँ एक आसान तरीका है के रूप में मैं .net के अभिव्यक्ति पेड़ के बारे में पता नहीं था पता नहीं है, लेकिन मैं एक कस्टम सार सिंटेक्स पेड़ में एसक्यूएल भाव के लिए एक lexer और पार्सर लिखा था (उस समय) और मैं वास्तव में एसक्यूएल पार्सिंग का आनंद नहीं लिया था।

वाक्य रचना बस बहुत दोस्ताना पार्स नहीं कर रहा है के रूप में अलग-अलग संदर्भ के आधार पर है (उदाहरण के NOT IN बनाम IS NOT में नहीं), टोकन अतिभारित रहे हैं (एक सूची बनाने के लिए डिफ़ॉल्ट ऑपरेटर पूर्वता बनाम कोष्ठकों ओवरराइड करने के लिए कोष्ठक WHERE x IN (1, 2) में) और बहुत आगे।

स्पष्ट रूप से अपने स्वयं के लेक्सिंग और पार्सिंग करने के बजाए एक पार्सर जनरेटर का उपयोग करना चीजों को आसान बना देगा, लेकिन मुझे नहीं पता कि एसक्यूएल के लिए और कुछ विशिष्ट है या नहीं।

तो, खुद को लिखना निश्चित रूप से संभव है, यद्यपि थकाऊ।

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