क्वेरी सिंटैक्स:
आइए सामान्य वाक्यविन्यास देखें:
से इटरेटर में डेटा स्रोतचुनना इटरेटर ;
यहाँ:
- Data_Source वह सूची हो सकती है जिसमें डेटा होता है।
- Iterator का उपयोग Data_Source से तत्वों को लाने के लिए किया जाता है।
डेटा स्रोत
इस संपूर्ण गाइड में, हम डेटा स्रोत के रूप में रिकॉर्ड की निम्नलिखित सूची का उपयोग करेंगे और सभी प्रश्न केवल इस डेटा स्रोत पर लागू होंगे। सुनिश्चित करें कि आप इस कोड को अपने वातावरण में चलाएँ और निम्नलिखित उदाहरणों के साथ क्वेरी स्टेटमेंट को एक-एक करके संशोधित करें, जिस पर हम चर्चा करने जा रहे हैं:
का उपयोग करते हुए प्रणाली ;
का उपयोग करते हुए सिस्टम.संग्रह.जेनेरिक ;
का उपयोग करते हुए सिस्टम.लिंक ;
का उपयोग करते हुए सिस्टम.संग्रह ;
जनता कक्षा गणना
{
जनता स्थिर खालीपन मुख्य ( )
{
// सूची निर्माण
देश_कीमतें सूचीबद्ध करें = नया सूची ( ) {
// सूची में 5 रिकॉर्ड जोड़ें
नया कीमतों ( ) { वस्तु = 'फल' ,जगह = 'अमेरीका' , मात्रा = 100 , लागत = 345.78 } ,
नया कीमतों ( ) { वस्तु = 'पागल' ,जगह = 'भारत' , मात्रा = 200 , लागत = 3645.78 } ,
नया कीमतों ( ) { वस्तु = 'अन्य' ,जगह = 'यूके' , मात्रा = 500 , लागत = 90.68 } ,
नया कीमतों ( ) { वस्तु = 'तेल' ,जगह = 'अमेरीका' , मात्रा = 100 , लागत = 345.78 } ,
नया कीमतों ( ) { वस्तु = 'मिर्च' ,जगह = 'अमेरीका' , मात्रा = 10 , लागत = 67.89 } ,
} ;
प्रत्येक के लिए ( था मैं में देश_कीमतें )
{
सांत्वना देना . पंक्ति लिखो ( मैं . वस्तु + ' ' + मैं . जगह + ' ' + मैं . मात्रा + ' ' + मैं . लागत ) ;
}
}
}
जनता कक्षा कीमतों {
जनता डोरी वस्तु { पाना ; तय करना ; }
जनता डोरी जगह { पाना ; तय करना ; }
जनता int यहाँ मात्रा { पाना ; तय करना ; }
जनता दोहरा लागत { पाना ; तय करना ; }
}
रिकॉर्ड्स:
व्याख्या:
1. निम्नलिखित विशेषताओं के साथ कीमतें बनाएं:
2. मुख्य विधि के साथ एक और वर्ग बनाएं जो 'गणना' है और पांच रिकॉर्ड के साथ देश_कीमत सूची बनाएं।
चुनना
मूल रूप से, 'चयन' एक प्रक्षेपण ऑपरेटर है जो निर्दिष्ट डेटा स्रोत से विशेषताओं का चयन करता है। क्वेरी 'से' से शुरू होती है। फिर, हम उस पुनरावर्तक को निर्दिष्ट करते हैं जो डेटा स्रोत पर पुनरावृत्त होता है। फिर, 'चयन करें' ऑपरेटर निर्दिष्ट किया गया है।
वाक्य - विन्यास:
सभी गुण: Data_Source में इटरेटर से इटरेटर चुनें;
विशिष्ट गुण: Data_Source में iterator से iterator.attribute चुनें;
उदाहरण 1:
आइए सूची से सभी रिकॉर्ड चुनने के लिए एक क्वेरी लिखें।
का उपयोग करते हुए प्रणाली ;का उपयोग करते हुए सिस्टम.संग्रह.जेनेरिक ;
का उपयोग करते हुए सिस्टम.लिंक ;
का उपयोग करते हुए सिस्टम.संग्रह ;
जनता कक्षा गणना
{
जनता स्थिर खालीपन मुख्य ( )
{
// सूची निर्माण
देश_कीमतें सूचीबद्ध करें = नया सूची ( ) {
// सूची में 5 रिकॉर्ड जोड़ें
नया कीमतों ( ) { वस्तु = 'फल' ,जगह = 'अमेरीका' , मात्रा = 100 , लागत = 345.78 } ,
नया कीमतों ( ) { वस्तु = 'पागल' ,जगह = 'भारत' , मात्रा = 200 , लागत = 3645.78 } ,
नया कीमतों ( ) { वस्तु = 'अन्य' ,जगह = 'यूके' , मात्रा = 500 , लागत = 90.68 } ,
नया कीमतों ( ) { वस्तु = 'तेल' ,जगह = 'अमेरीका' , मात्रा = 100 , लागत = 345.78 } ,
नया कीमतों ( ) { वस्तु = 'मिर्च' ,जगह = 'अमेरीका' , मात्रा = 10 , लागत = 67.89 } ,
} ;
//क्वेरी में ऑपरेटर का चयन करें
था आंकड़े = से मैं में देश_कीमतें
चुनना मैं ;
प्रत्येक के लिए ( था मैं में आंकड़े )
{
सांत्वना देना . पंक्ति लिखो ( मैं . वस्तु + ' ' + मैं . जगह + ' ' + मैं . मात्रा + ' ' + मैं . लागत ) ;
}
}
}
जनता कक्षा कीमतों {
जनता डोरी वस्तु { पाना ; तय करना ; }
जनता डोरी जगह { पाना ; तय करना ; }
जनता int यहाँ मात्रा { पाना ; तय करना ; }
जनता दोहरा लागत { पाना ; तय करना ; }
}
आउटपुट:
यहां, हमने 'चयन करें' क्वेरी में कोई विशेषता निर्दिष्ट नहीं की है। हमने इटरेटर का उपयोग करके 'foreach' लूप के अंदर क्वेरी (डेटा) से सभी विशेषताएँ प्राप्त कीं।
उदाहरण 2:
अब, 'चयन करें' ऑपरेटर के भीतर आइटम विशेषता निर्दिष्ट करके आइटम प्राप्त करें। प्रश्न है '' देश_कीमतों में i से i.आइटम चुनें ”।
//क्वेरी में आइटम विशेषता प्राप्त करने के लिए ऑपरेटर का चयन करेंथा आंकड़े = से मैं में देश_कीमतें
चुनना मैं . वस्तु ;
प्रत्येक के लिए ( था मैं में आंकड़े )
{
सांत्वना देना . पंक्ति लिखो ( मैं ) ;
}
आउटपुट:
पंक्ति # 21 - पंक्ति # 29:
2. कहाँ
यदि आप कुछ शर्तों/शर्तों के आधार पर डेटा को फ़िल्टर करना चाहते हैं, तो आप क्वेरी में 'चयन' खंड के साथ 'कहां' ऑपरेटर का उपयोग कर सकते हैं। लेकिन पहले 'कहाँ' ऑपरेटर का उपयोग किया जाता है और फिर चयन ऑपरेटर निर्दिष्ट किया जाता है।
वाक्य - विन्यास:
आइए देखें कि LINQ क्वेरी के अंदर 'कहाँ' ऑपरेटर का उपयोग कैसे करें।
से इटरेटर में डेटा स्रोतकहाँ स्थिति / एस
चुनना इटरेटर . गुण ;
उदाहरण 1: एकल शर्त
आइए आइटम विशेषता के आधार पर रिकॉर्ड फ़िल्टर करें। एक शर्त के रूप में 'कहाँ' ऑपरेटर में बराबर (==) ऑपरेटर का उपयोग करें और पुनरावर्तक की तुलना 'मिर्च' से करें। तो, जो रिकॉर्ड 'मिर्च' से संबंधित हैं, उनका चयन किया जाता है।
प्रश्न है ' देश_कीमतों में मैं से
जहां i.item == 'मिर्च'
मैं का चयन करें'
था आंकड़े = से मैं में देश_कीमतें
कहाँ मैं . वस्तु == 'मिर्च'
चुनना मैं ;
प्रत्येक के लिए ( था मैं में आंकड़े )
{
सांत्वना देना . पंक्ति लिखो ( मैं . वस्तु + ' ' + मैं . जगह + ' ' + मैं . मात्रा + ' ' + मैं . लागत ) ;
}
आउटपुट:
'मिर्च' आइटम के साथ केवल एक रिकॉर्ड है।
पंक्ति # 21 - पंक्ति # 30:
उदाहरण 2: एकाधिक शर्तें
आइए स्थान और मात्रा विशेषताओं के आधार पर रिकॉर्ड फ़िल्टर करें। मात्रा 50 से अधिक और 300 से कम होनी चाहिए। स्थान 'यूएसए' होना चाहिए।
प्रश्न है ' देश_कीमतों में मैं से
जहां i.मात्रा > 50
जहां i.मात्रा <300
जहां i.स्थान == 'यूएसए'
मैं का चयन करें'
था आंकड़े = से मैं में देश_कीमतें
कहाँ मैं . मात्रा > पचास
कहाँ मैं . मात्रा < 300
कहाँ मैं . जगह == 'अमेरीका'
चुनना मैं ;
प्रत्येक के लिए ( था मैं में आंकड़े )
{
सांत्वना देना . पंक्ति लिखो ( मैं . वस्तु + ' ' + मैं . जगह + ' ' + मैं . मात्रा + ' ' + मैं . लागत ) ;
}
आउटपुट:
ऐसे दो रिकॉर्ड हैं जो पिछली स्थितियों से मेल खाते हैं।
पंक्ति # 21 - पंक्ति # 32:
उदाहरण 3: और (&&) ऑपरेटर
हम एक समय में कई शर्तों को निर्दिष्ट करने के लिए 'और (&&)' ऑपरेटर को निर्दिष्ट कर सकते हैं। यदि सभी शर्तें सत्य हैं, तो सभी शर्तों को पूरा करने वाले रिकॉर्ड क्वेरी द्वारा वापस कर दिए जाते हैं।
इस उदाहरण में, यदि मात्रा 20 से अधिक है और लागत 67.89 है तो हम रिकॉर्ड का चयन करते हैं।
प्रश्न है ' देश_कीमतों में मैं से
जहां i.मात्रा < 20 && i.cost == 67.89
मैं का चयन करें'
कहाँ मैं . मात्रा < बीस && मैं . लागत == 67.89
चुनना मैं ;
प्रत्येक के लिए ( था मैं में आंकड़े )
{
सांत्वना देना . पंक्ति लिखो ( मैं . वस्तु + ' ' + मैं . जगह + ' ' + मैं . मात्रा + ' ' + मैं . लागत ) ;
}
आउटपुट:
केवल एक रिकॉर्ड है जिसकी मात्रा 20 से कम है और लागत 67.89 है
पंक्ति # 21 - पंक्ति # 29:
उदाहरण 4: या (||) ऑपरेटर
'या (||)' ऑपरेटर का उपयोग एक समय में कई शर्तों को निर्दिष्ट करने के लिए भी किया जाता है। यदि कम से कम एक शर्त सत्य है, तो उस शर्त को पूरा करने वाले रिकॉर्ड वापस कर दिए जाते हैं।
इस उदाहरण में, यदि मात्रा 300 से अधिक है या स्थान 'टोक्यो' है तो हम रिकॉर्ड का चयन करते हैं।
प्रश्न है ' देश_कीमतों में मैं से
जहां i.मात्रा > 300 || i.स्थान == 'टोक्यो'
मैं का चयन करें'
कहाँ मैं . मात्रा > 300 || मैं . जगह == 'टोक्यो'
चुनना मैं ;
प्रत्येक के लिए ( था मैं में आंकड़े )
{
सांत्वना देना . पंक्ति लिखो ( मैं . वस्तु + ' ' + मैं . जगह + ' ' + मैं . मात्रा + ' ' + मैं . लागत ) ;
}
आउटपुट:
केवल एक रिकॉर्ड है जिसकी मात्रा 300 से अधिक है (पहली शर्त मेल खाती है)।
पंक्ति # 21 - पंक्ति # 29:
3. द्वारा आदेश
यदि आप LINQ क्वेरी द्वारा लौटाए गए रिकॉर्ड्स को किसी भी विशेषता में मानों के आधार पर आरोही या अवरोही क्रम में व्यवस्थित करना चाहते हैं, तो आप क्वेरी में 'ऑर्डर बाय' ऑपरेटर का उपयोग कर सकते हैं। आपको 'चयन करें' ऑपरेटर से पहले इस ऑपरेटर को निर्दिष्ट करना होगा।
वाक्य - विन्यास:
आइए देखें कि LINQ क्वेरी के अंदर 'ऑर्डर बाय' ऑपरेटर का उपयोग कैसे करें।
आरोही क्रम:
से इटरेटर में डेटा स्रोतआदेश द्वारा इटरेटर . गुण आरोही
चुनना इटरेटर ;
अवरोही क्रम:
से इटरेटर में डेटा स्रोतआदेश द्वारा इटरेटर . गुण अवरोही
चुनना इटरेटर ;
उदाहरण 1: आरोही क्रम
डेटा स्रोत (सूची) से सभी विशेषताओं का चयन करें और उन्हें मात्रा विशेषता में मानों के आधार पर आरोही क्रम में लौटाएं।
प्रश्न है ' देश_कीमतों में मैं से
क्रम से i.मात्रा आरोही
मैं का चयन करें'
मेरे द्वारा आदेश . मात्रा आरोही
चुनना मैं ;
प्रत्येक के लिए ( था मैं में आंकड़े )
{
सांत्वना देना . पंक्ति लिखो ( मैं . वस्तु + ' ' + मैं . जगह + ' ' + मैं . मात्रा + ' ' + मैं . लागत ) ;
}
आउटपुट:
पंक्ति # 21 - पंक्ति # 29:
उदाहरण 2: अवरोही क्रम
डेटा स्रोत (सूची) से सभी विशेषताओं का चयन करें और उन्हें लागत विशेषता में मानों के आधार पर अवरोही क्रम में लौटाएं।
प्रश्न है ' देश_कीमतों में मैं से
ऑर्डर द्वारा i.लागत घट रही है
मैं का चयन करें'
मेरे द्वारा आदेश . लागत अवरोही
चुनना मैं ;
प्रत्येक के लिए ( था मैं में आंकड़े )
{
सांत्वना देना . पंक्ति लिखो ( मैं . वस्तु + ' ' + मैं . जगह + ' ' + मैं . मात्रा + ' ' + मैं . लागत ) ;
}
आउटपुट:
पंक्ति # 21 - पंक्ति # 29:
4. सीमा
SQL में सीमा क्वेरी द्वारा लौटाए गए रिकॉर्ड को सीमित करती है। यह शीर्ष रिकॉर्ड लौटाता है जो क्वेरी द्वारा लौटाए जाते हैं। LINQ में, हम Take() ऑपरेटर के साथ Skip() का उपयोग करके इसे प्राप्त कर सकते हैं। Take() को रिकॉर्ड की निर्दिष्ट संख्या मिलती है। स्किप() का उपयोग आरंभिक रिकॉर्ड संख्या निर्दिष्ट करने के लिए किया जाता है। इस तरह, हम LINQ में 'सीमा' कार्यक्षमता प्राप्त कर सकते हैं।
वाक्य - विन्यास:
( से इटरेटर में डेटा स्रोतचुनना इटरेटर ) . छोडना ( एन ) . लेना ( एन ) ;
- स्किप() का उपयोग रिकॉर्ड्स को छोड़ने और शेष रिकॉर्ड्स को वापस करने के लिए किया जाता है। यह एक पूर्णांक लेता है जो छोड़े जाने वाले तत्वों की संख्या निर्दिष्ट करता है। हमारे मामले में, यह 0 है।
- Take() का उपयोग पहले रिकॉर्ड से 'n' संख्या में रिकॉर्ड लेने के लिए किया जाता है।
उदाहरण:
क्वेरी द्वारा लौटाए गए पांच रिकॉर्ड में से पहले तीन रिकॉर्ड का चयन करें।
प्रश्न है ' (देश_कीमतों में मैं से
i चुनें).छोड़ें(0).लेएं(3)”
चुनना मैं ) . छोडना ( 0 ) . लेना ( 3 ) ;
प्रत्येक के लिए ( था मैं में आंकड़े )
{
सांत्वना देना . पंक्ति लिखो ( मैं . वस्तु + ' ' + मैं . जगह + ' ' + मैं . मात्रा + ' ' + मैं . लागत ) ;
}
}
आउटपुट:
पंक्ति # 21 - पंक्ति # 28:
निष्कर्ष
हमने सीखा कि क्वेरीज़ को C# LINQ में कैसे लिखा जाता है जो कि SQL के समान है। इस ट्यूटोरियल के भाग के रूप में, हमने चर्चा की कि डेटा स्रोत से रिकॉर्ड का चयन करने के लिए 'चयन करें' ऑपरेटर का उपयोग कैसे करें। क्वेरी द्वारा लौटाए गए रिकॉर्ड को फ़िल्टर करने के लिए, हमने शर्तों को निर्दिष्ट करके 'कहाँ' ऑपरेटर का उपयोग किया। फिर, हमने सीखा कि 'ऑर्डर बाय' ऑपरेटर के साथ क्वेरी द्वारा लौटाए गए रिकॉर्ड को कैसे क्रमबद्ध किया जाए। अंत में, रिकॉर्ड को सीमित करने के लिए, हमने स्किप() और टेक() ऑपरेटरों का उपयोग किया।