C# LINQ को डिक्शनरी में बदलें

C Linq Ko Diksanari Mem Badalem



C# LINQ में, से एक शब्दकोश बनाना System.Collections.Generic.IEnumerable ToDictionary() विधि का उपयोग करना संभव है। यह विधि दिए गए से के साथ एक शब्दकोश बनाती है। System.ArgumentNullException यदि डेटा स्रोत, कुंजी चयनकर्ता, या तत्व चयनकर्ता शून्य है तो इसे फेंक दिया जाता है। इसके अलावा, यदि कुंजी चयनकर्ता दो तत्वों के लिए डुप्लिकेट कुंजी उत्पन्न करता है, तो System.ArgumentException फेंक दिया जाता है. इस गाइड में, हम चर्चा करेंगे कि दो तरीकों को ओवरलोड करके सूची डेटा स्रोत से एक शब्दकोश कैसे बनाया जाए।

वाक्य - विन्यास:

1. यदि आप दिए गए डेटा स्रोत से निर्दिष्ट कुंजी चयनकर्ता और तत्व चयनकर्ता फ़ंक्शन के अनुसार एक शब्दकोश बनाना चाहते हैं, तो निम्न विधि को ओवरलोड करें:









पैरामीटर:



    1. स्रोत : स्रोत एक IEnumerable (सूची) हो सकता है जिसमें इस स्रोत से शब्दकोश बनाया जाता है।
    2. कुंजी चयनकर्ता : यह एक फ़ंक्शन है जिसका उपयोग प्रत्येक तत्व से कुंजी प्राप्त करने के लिए किया जाता है।
    3. तत्व चयनकर्ता: यह एक फ़ंक्शन है जिसका उपयोग तत्व प्राप्त करने के लिए किया जाता है।
    4. टीएसस्रोत : यह प्रकार पैरामीटर है जो डेटा स्रोत के प्रकार को निर्दिष्ट करता है।
    5. टीके: यह प्रकार पैरामीटर है जो कुंजी के प्रकार को निर्दिष्ट करता है।
    6. टेलीमेंट : यह प्रकार पैरामीटर है जो तत्व के प्रकार को निर्दिष्ट करता है।

2. यदि आप दिए गए डेटा स्रोत से निर्दिष्ट कुंजी चयनकर्ता फ़ंक्शन के अनुसार एक शब्दकोश बनाना चाहते हैं, तो निम्न विधि को ओवरलोड करें:





पैरामीटर:



    1. स्रोत : स्रोत एक IEnumerable (सूची) हो सकता है जिसमें इस स्रोत से शब्दकोश बनाया जाता है।
    2. कुंजी चयनकर्ता : यह एक फ़ंक्शन है जिसका उपयोग प्रत्येक तत्व से कुंजी प्राप्त करने के लिए किया जाता है।
    3. स्रोत: यह डेटा स्रोत के प्रकार को संदर्भित करता है।
    4. TKey : यह कुंजी के प्रकार को निर्दिष्ट करता है।

उदाहरण 1: निर्दिष्ट कुंजी चयनकर्ता और तत्व चयनकर्ता फ़ंक्शन

'खाता' प्रकार के साथ एक सूची बनाएं जिसमें पांच रिकॉर्ड के साथ चार विशेषताएँ (Acc_ID, Acc_Name, उद्योग, राजस्व) हों।

1. पिछली सूची से Acc_ID कुंजी और Acc_Name मान के साथ एक शब्दकोश बनाएं।
2. Acc_Name जैसी कुंजी और राजस्व के रूप में मान के साथ पिछली सूची से एक शब्दकोश बनाएं।

का उपयोग करते हुए प्रणाली ;
का उपयोग करते हुए सिस्टम.लिंक ;
का उपयोग करते हुए सिस्टम.संग्रह.जेनेरिक ;

कक्षा खाता संबंधी जानकारी
{
जनता स्थिर खालीपन मुख्य ( )
{
// प्रकार की सूची बनाएं - खाता।
सूची विवरण = नया सूची ( ) ;
// सूची में 5 रिकॉर्ड जोड़ें।
विवरण . जोड़ना ( नया खाता { Acc_ID = 1 , Acc_Name = 'लिनक्स' , उद्योग = 'शिक्षा' ,आय = 2500 } ) ;
विवरण . जोड़ना ( नया खाता { Acc_ID = 2 , Acc_Name = 'पायथन' , उद्योग = 'सैन्य रंगरूटों के लिए प्रशिक्षण शिविर' ,आय = 10000 } ) ;
विवरण . जोड़ना ( नया खाता { Acc_ID = 3 , Acc_Name = 'जावा' , उद्योग = 'शिक्षा' ,आय = 500 } ) ;
विवरण . जोड़ना ( नया खाता { Acc_ID = 4 , Acc_Name = '।जाल' , उद्योग = 'प्रशिक्षण' ,आय = 2080 } ) ;
विवरण . जोड़ना ( नया खाता { Acc_ID = 5 , Acc_Name = 'आकाशवाणी' , उद्योग = 'काम' ,आय = 2090 } ) ;

// उपरोक्त सूची से Acc_ID कुंजी और Acc_Name मान के साथ एक शब्दकोश बनाएं
सांत्वना देना . पंक्ति लिखो ( ' ---- Acc_ID के रूप में कुंजी और Acc_Name के रूप में मान ----' ) ;
शब्दकोश खाते_dict1 = विवरण . ToDictionary ( जे => जे . Acc_ID , जे => जे . Acc_Name ) ;

प्रत्येक के लिए ( KeyValuePair i में एकाउंट्स_डिक्ट1 )
{
सांत्वना देना . पंक्ति लिखो ( 'खाता आईडी :' + मैं . चाबी + ' खाता नाम :' + मैं . कीमत ) ;
}

// Acc_Name के रूप में कुंजी और राजस्व के रूप में मान के साथ उपरोक्त सूची से एक शब्दकोश बनाएं
सांत्वना देना . पंक्ति लिखो ( ' ---- Acc_Name के रूप में कुंजी और राजस्व के रूप में मान ----' ) ;
शब्दकोश खाते_dict2 = विवरण . ToDictionary ( एल => एल . Acc_Name , एल => एल . आय ) ;

प्रत्येक के लिए ( KeyValuePair k में एकाउंट्स_डिक्ट2 )
{
सांत्वना देना . पंक्ति लिखो ( 'खाता नाम :' + . चाबी + 'खाता-राजस्व :' + . कीमत ) ;
}

}
}

// नाम से क्लास बनाएं - चार विशेषताओं वाला खाता
जनता कक्षा खाता
{
जनता int यहाँ Acc_ID { पाना ; तय करना ; }
जनता डोरी Acc_Name { पाना ; तय करना ; }
जनता डोरी उद्योग { पाना ; तय करना ; }
जनता int यहाँ आय { पाना ; तय करना ; }
}

आउटपुट:

व्याख्या:

1. चार विशेषताओं के साथ 'खाता' नामक एक वर्ग बनाएं।

2. मुख्य वर्ग में, 'खाता' प्रकार की सूची बनाएं और उसमें पांच रिकॉर्ड डालें।

3. पिछली सूची से Acc_ID कुंजी और Acc_Name मान के साथ एक शब्दकोश बनाएं। यहां, हम TKey को int और TElement को स्ट्रिंग के रूप में निर्दिष्ट करते हैं। ToDictionary() विधि के अंदर, हम keySelector में Acc_ID और elementSelector में Acc_Name पास करते हैं। अंत में, हम शब्दकोश को पुनरावृत्त करने के लिए 'foreach' लूप का उपयोग करते हैं और कुंजी और मान गुणों का उपयोग करके कुंजी और मान वापस करते हैं।

4. पिछली सूची से Acc_Name जैसी कुंजी और राजस्व के रूप में मान के साथ एक शब्दकोश बनाएं। यहां, हम TKey को स्ट्रिंग के रूप में और TElement को int के रूप में निर्दिष्ट करते हैं। ToDictionary() विधि के अंदर, हम कुंजी चयनकर्ता में Acc_Name और तत्व चयनकर्ता में राजस्व पास करते हैं। अंत में, हम शब्दकोश को पुनरावृत्त करने के लिए 'foreach' लूप का उपयोग करते हैं और कुंजी और मान गुणों का उपयोग करके कुंजी और मान वापस करते हैं।

उदाहरण 2: निर्दिष्ट कुंजी चयनकर्ता

पिछले कोड का उपयोग करें और Acc_ID जैसी कुंजी के साथ पिछली सूची से एक शब्दकोश बनाएं।

का उपयोग करते हुए प्रणाली ;
का उपयोग करते हुए सिस्टम.लिंक ;
का उपयोग करते हुए सिस्टम.संग्रह.जेनेरिक ;

कक्षा खाता संबंधी जानकारी
{
जनता स्थिर खालीपन मुख्य ( )
{
// प्रकार की सूची बनाएं - खाता।
सूची विवरण = नया सूची ( ) ;
// सूची में 5 रिकॉर्ड जोड़ें।
विवरण . जोड़ना ( नया खाता { Acc_ID = 1 , Acc_Name = 'लिनक्स' , उद्योग = 'शिक्षा' ,आय = 2500 } ) ;
विवरण . जोड़ना ( नया खाता { Acc_ID = 2 , Acc_Name = 'पायथन' , उद्योग = 'सैन्य रंगरूटों के लिए प्रशिक्षण शिविर' ,आय = 10000 } ) ;
विवरण . जोड़ना ( नया खाता { Acc_ID = 3 , Acc_Name = 'जावा' , उद्योग = 'शिक्षा' ,आय = 500 } ) ;
विवरण . जोड़ना ( नया खाता { Acc_ID = 4 , Acc_Name = '।जाल' , उद्योग = 'प्रशिक्षण' ,आय = 2080 } ) ;
विवरण . जोड़ना ( नया खाता { Acc_ID = 5 , Acc_Name = 'आकाशवाणी' , उद्योग = 'काम' ,आय = 2090 } ) ;

// उपरोक्त सूची से Acc_ID कुंजी के साथ एक शब्दकोश बनाएं।
शब्दकोश अकाउंट्स_डिक्ट = विवरण . ToDictionary ( जे => जे . Acc_ID ) ;
प्रत्येक के लिए ( KeyValuePair i में एकाउंट्स_डिक्ट )
{
सांत्वना देना . पंक्ति लिखो ( 'चाबी:' + मैं . चाबी + '--> खाता-नाम :' + मैं . कीमत . Acc_Name
+ 'खाता-उद्योग:' + मैं . कीमत . उद्योग
+ 'खाता-राजस्व :' + मैं . कीमत . आय ) ;
}

}
}

// नाम से क्लास बनाएं - चार विशेषताओं वाला खाता
जनता कक्षा खाता
{
जनता int यहाँ Acc_ID { पाना ; तय करना ; }
जनता डोरी Acc_Name { पाना ; तय करना ; }
जनता डोरी उद्योग { पाना ; तय करना ; }
जनता int यहाँ आय { पाना ; तय करना ; }
}

आउटपुट:

व्याख्या:

यहां, हम Acc_ID जैसी कुंजी के साथ एक शब्दकोश बनाते हैं। यह शब्दकोश में प्रत्येक रिकॉर्ड के लिए कुंजी के रूप में कार्य करता है जिसे हमने सूची से बनाया है। उसके बाद, हम कुंजी और मान गुणों का उपयोग करके कुंजी और मान (विशेषताओं के साथ) प्राप्त करने के लिए 'foreach' लूप का उपयोग करते हैं।

उदाहरण 3: डुप्लिकेट कुंजियाँ - ArgumentException

दो रिकॉर्ड के साथ एक सूची बनाएं और इसे कुंजी के रूप में Acc_ID के साथ एक शब्दकोश में बदलने का प्रयास करें।

का उपयोग करते हुए प्रणाली ;
का उपयोग करते हुए सिस्टम.लिंक ;
का उपयोग करते हुए सिस्टम.संग्रह.जेनेरिक ;

कक्षा खाता संबंधी जानकारी
{
जनता स्थिर खालीपन मुख्य ( )
{
// प्रकार की सूची बनाएं - खाता।
सूची विवरण = नया सूची ( ) ;
// सूची में 2 रिकॉर्ड जोड़ें।
विवरण . जोड़ना ( नया खाता { Acc_ID = 1 , Acc_Name = 'लिनक्स' , उद्योग = 'शिक्षा' ,आय = 2500 } ) ;
विवरण . जोड़ना ( नया खाता { Acc_ID = 1 , Acc_Name = 'पायथन' , उद्योग = 'सैन्य रंगरूटों के लिए प्रशिक्षण शिविर' ,आय = 10000 } ) ;

// उपरोक्त सूची से Acc_ID कुंजी के साथ एक शब्दकोश बनाने का प्रयास करें।
शब्दकोश अकाउंट्स_डिक्ट = विवरण . ToDictionary ( जे => जे . Acc_ID ) ;

}
}

// नाम से क्लास बनाएं - चार विशेषताओं वाला खाता
जनता कक्षा खाता
{
जनता int यहाँ Acc_ID { पाना ; तय करना ; }
जनता डोरी Acc_Name { पाना ; तय करना ; }
जनता डोरी उद्योग { पाना ; तय करना ; }
जनता int यहाँ आय { पाना ; तय करना ; }
}

अपवाद:

एक हैंडल न किया गया अपवाद जो कि System.ArgumentException है, उठाया गया है क्योंकि दोनों Acc_ID में कुंजी डुप्लिकेट (1) है।

उदाहरण 4: अशक्त स्रोत - ArgumentNullException

'खाता' प्रकार के साथ एक सूची बनाएं और उसे शून्य निर्दिष्ट करें। Acc_ID जैसी कुंजी के साथ पिछली सूची से एक शब्दकोश बनाने का प्रयास करें।

का उपयोग करते हुए प्रणाली ;
का उपयोग करते हुए सिस्टम.लिंक ;
का उपयोग करते हुए सिस्टम.संग्रह.जेनेरिक ;

कक्षा खाता संबंधी जानकारी
{
जनता स्थिर खालीपन मुख्य ( )
{
// प्रकार की सूची बनाएं - खाता और इसे शून्य असाइन करें।
सूची विवरण = व्यर्थ ;

// उपरोक्त सूची से Acc_ID कुंजी के साथ एक शब्दकोश बनाने का प्रयास करें।
शब्दकोश अकाउंट्स_डिक्ट = विवरण . ToDictionary ( जे => जे . Acc_ID ) ;

}
}

// नाम से क्लास बनाएं - चार विशेषताओं वाला खाता
जनता कक्षा खाता
{
जनता int यहाँ Acc_ID { पाना ; तय करना ; }
जनता डोरी Acc_Name { पाना ; तय करना ; }
जनता डोरी उद्योग { पाना ; तय करना ; }
जनता int यहाँ आय { पाना ; तय करना ; }
}

अपवाद:

सूची शून्य होने के कारण एक हैंडल न किया गया अपवाद System.ArgumentNullException उठाया गया है।

निष्कर्ष

हमने सीखा कि C# LINQ में ToDictionary() विधि का उपयोग करके IEnumerable (यहां, यह सूची है) से एक शब्दकोश कैसे बनाया जाए। इस विधि को दो तरह से अतिभारित किया जा सकता है। हमने उदाहरण सहित दोनों विधियों पर चर्चा की। साथ ही, हमने दो अपवाद मामलों के बारे में भी सीखा जो इस विधि द्वारा उठाए जाते हैं जब डेटा स्रोत/कुंजी चयनकर्ता/तत्व चयनकर्ता शून्य होता है और कुंजियाँ डुप्लिकेट होती हैं।