C# Language
IQueryable इंटरफ़ेस
खोज…
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 इंटरफ़ेस के दायरे से बाहर हैं।)