खोज…


LINQ क्वेरी का SQL क्वेरी में अनुवाद करना

IQueryable और IQueryable<T> इंटरफेस डेवलपर्स को एक विशिष्ट डेटा स्रोत के लिए एक LINQ क्वेरी (एक 'भाषा-एकीकृत' क्वेरी) का अनुवाद करने की अनुमति देता है, उदाहरण के लिए एक रिलेशनल डेटाबेस। C # में लिखी इस LINQ क्वेरी को लें:

var query = from book in books
            where book.Author == "Stephen King" 
            select book;

यदि वैरिएबल books एक प्रकार की हैं, जो IQueryable<Book> लागू करती है, तो उपर्युक्त क्वेरी प्रदाता ( IQueryable.Provider संपत्ति पर सेट) एक अभिव्यक्ति ट्री के रूप में पास हो जाती है, एक डेटा संरचना जो कोड की संरचना को दर्शाती है ।

प्रदाता निर्धारित करने के लिए रनटाइम पर अभिव्यक्ति ट्री का निरीक्षण कर सकता है:

  • कि Book वर्ग की Author संपत्ति के लिए एक विधेय है;
  • कि तुलना विधि का उपयोग किया जाता है 'बराबर' ( == );
  • इसके बराबर का मूल्य "Stephen King" होना चाहिए।

इस जानकारी के साथ प्रदाता रन # पर एक SQL क्वेरी में C # क्वेरी को ट्रांसलेट कर सकता है और उस क्वेरी को रिलेशनल डेटाबेस में केवल उन्हीं पुस्तकों को लाने के लिए पास करता है, जो विधेय से मेल खाती हैं:

select *
from Books
where Author = 'Stephen King'

प्रदाता को तब बुलाया जाता है जब query चर ( IQueryable औजार IEnumerable ) से अधिक IQueryable

(इस उदाहरण में उपयोग किए गए प्रदाता को कुछ अतिरिक्त मेटाडेटा की आवश्यकता होगी, जिससे पता चले कि किस तालिका को क्वेरी करना है और तालिका के स्तंभों के C # वर्ग के गुणों का मिलान कैसे करना है, लेकिन इस तरह के मेटाडेटा IQueryable इंटरफ़ेस के दायरे से बाहर हैं।)



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow