यह ज्यादातर LINQ के इतिहास में आता है।
LINQ को मूल रूप से SQL की तरह इस्तेमाल करने का इरादा था , और SQL डेटाबेस से जुड़ने के लिए (काफी हद तक, हालांकि विशेष रूप से नहीं) इस्तेमाल किया गया था । इसके कारण इसकी बहुत सी शब्दावली SQL पर आधारित है।
तो, "चुनें" एसक्यूएल से आया select
बयान, और "कुल" एसक्यूएल कुल कार्यों से आया है (जैसे, count
, sum
, avg
, min
, max
)।
उन लोगों के लिए जो डिग्री पर प्रश्न करते हैं कि LINQ मूल रूप से SQL से संबंधित है, मैं उदाहरण के लिए (उदाहरण के लिए) C a पर Microsoft के लेखों का उल्लेख करूँगा, जो Microsoft अनुसंधान द्वारा तैयार की गई भाषा थी, और ऐसा प्रतीत होता है जहाँ LINQ की अधिकांश मूल बातें काम की थीं इससे पहले कि वे C # और .NET में जोड़े गए।
उदाहरण के लिए, Cω पर एक MSDN लेख पर विचार करें , जो कहता है:
Cω में क्वेरी ऑपरेटर
C क्वेरी ऑपरेटरों के दो व्यापक वर्गों को C # भाषा में जोड़ता है:
- XPath- आधारित ऑपरेटर किसी ऑब्जेक्ट के सदस्य चर को नाम या प्रकार से क्वेरी करने के लिए।
- एक या एक से अधिक वस्तुओं से प्रक्षेपण, समूहन, और डेटा से जुड़ने वाले परिष्कृत प्रश्नों को करने के लिए SQL- आधारित ऑपरेटर।
कम से कम जहां तक मुझे पता है, XPath- आधारित ऑपरेटरों को कभी भी C # में नहीं जोड़ा गया था, केवल उन ऑपरेटरों को छोड़ दिया गया था जो कि सीधे (LINQ से पहले मौजूद थे) SQL पर सीधे आधारित थे।
अब, यह निश्चित रूप से सच है कि LINQ C it's में SQL- आधारित क्वेरी ऑपरेटरों के समान नहीं है। विशेष रूप से, LINQ C # की मूल वस्तुओं का अनुसरण करता है और फ़ंक्शन सिंटैक्स को C LIN की तुलना में अधिक निकटता से बुलाता है। C प्रश्नों ने SQL सिंटैक्स का और भी अधिक बारीकी से पालन किया, इसलिए आप कुछ इस तरह लिख सकते थे (फिर, ऊपर दिए गए लेख से सीधे खींचा गया):
rows = select c.ContactName, o.ShippedDate
from c in DB.Customers
inner join o in DB.Orders
on c.CustomerID == o.CustomerID;
और हाँ, वही लेख वास्तविक SQL डेटाबेस से आने वाले डेटा को क्वेरी करने के लिए SQL- आधारित क्वेरी का उपयोग करने के बारे में विशेष रूप से बात करता है:
Cω में SQL डेटाबेस से कनेक्ट करने के लिए, इसे एक प्रबंधित असेंबली (यानी, .NET लाइब्रेरी फ़ाइल) के रूप में उजागर किया जाना चाहिए, जिसे तब एप्लिकेशन द्वारा संदर्भित किया जाता है। Visual Studio के भीतर से sql2comega.exe कमांड लाइन टूल या Add डेटाबेस स्कीमा ... डायलॉग का उपयोग करके किसी रिलेशनल डेटाबेस को C be को प्रबंधित असेंबली के रूप में दिखाया जा सकता है । डेटाबेस ऑब्जेक्ट का उपयोग Cω सर्वर द्वारा होस्ट किए गए रिलेशनल डेटाबेस का प्रतिनिधित्व करने के लिए करते हैं। एक डाटाबेस वस्तु हर तालिका या देखने के लिए, और प्रत्येक मेज-मान समारोह डेटाबेस में पाया के लिए एक विधि के लिए एक सार्वजनिक संपत्ति है। संबंधपरक डेटाबेस को क्वेरी करने के लिए, एक तालिका, दृश्य या तालिका-मूल्यवान फ़ंक्शन को SQL- आधारित ऑपरेटरों के एक या अधिक इनपुट के रूप में निर्दिष्ट किया जाना चाहिए।
निम्न नमूना कार्यक्रम और आउटपुट Cω में एक रिलेशनल डेटाबेस को क्वेरी करने के लिए SQL- आधारित ऑपरेटरों का उपयोग करने की कुछ क्षमताओं को दर्शाता है। इस उदाहरण में प्रयुक्त डेटाबेस नमूना नॉर्थविंड डेटाबेस है जो Microsoft SQL सर्वर के साथ आता है। उदाहरण में उपयोग किया गया डीबी नाम नॉर्थविंड.डील असेंबली के नॉर्थविंड नाम स्थान में डेटाबेस ऑब्जेक्ट के वैश्विक उदाहरण के लिए संदर्भित करता है जिसका उपयोग sql2comega.exe द्वारा किया जाता है ।
तो, हाँ, बहुत शुरुआत से (या शुरुआत से पहले, आपके दृष्टिकोण के आधार पर) LINQ स्पष्ट रूप से SQL पर आधारित था, और विशेष रूप से SQL डेटाबेस में डेटा तक पहुंच की अनुमति देने के लिए इरादा था।