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
इंटरफ़ेस के दायरे से बाहर हैं।)