தொடரியல்:
1. கொடுக்கப்பட்ட தரவு மூலத்திலிருந்து குறிப்பிட்ட விசை தேர்வி மற்றும் உறுப்பு தேர்வி செயல்பாடுகளின்படி அகராதியை உருவாக்க விரும்பினால், பின்வரும் முறையை ஓவர்லோட் செய்யவும்:
அளவுருக்கள்:
-
- ஆதாரம் : இந்த மூலத்திலிருந்து அகராதி உருவாக்கப்பட்ட IEnumerable (பட்டியல்) மூலமாக இருக்கலாம்.
- விசைத் தேர்வாளர் : இது ஒவ்வொரு உறுப்புகளிலிருந்தும் விசையைப் பெறப் பயன்படும் ஒரு செயல்பாடு.
- உறுப்பு தேர்வி: இது உறுப்பைப் பெறப் பயன்படும் ஒரு செயல்பாடு.
- TSஆதாரம் : இது தரவு மூலத்தின் வகையைக் குறிப்பிடும் வகை அளவுருவாகும்.
- TKey: இது விசையின் வகையைக் குறிப்பிடும் வகை அளவுருவாகும்.
- டெலிமென்ட் : இது தனிமத்தின் வகையைக் குறிப்பிடும் வகை அளவுருவாகும்.
2. கொடுக்கப்பட்ட தரவு மூலத்திலிருந்து குறிப்பிட்ட விசைத் தேர்வி செயல்பாட்டின்படி அகராதியை உருவாக்க விரும்பினால், பின்வரும் முறையை ஓவர்லோட் செய்யவும்:
அளவுருக்கள்:
-
- ஆதாரம் : இந்த மூலத்திலிருந்து அகராதி உருவாக்கப்பட்ட IEnumerable (பட்டியல்) மூலமாக இருக்கலாம்.
- விசைத் தேர்வாளர் : இது ஒவ்வொரு உறுப்புகளிலிருந்தும் விசையைப் பெறப் பயன்படும் ஒரு செயல்பாடு.
- TSஆதாரம்: இது தரவு மூல வகையைக் குறிக்கிறது.
- TKey : இது விசையின் வகையைக் குறிப்பிடுகிறது.
எடுத்துக்காட்டு 1: குறிப்பிடப்பட்ட விசை தேர்வி மற்றும் உறுப்பு தேர்வி செயல்பாடு
ஐந்து பதிவுகளுடன் நான்கு பண்புக்கூறுகளை (Acc_ID, Acc_Name, Industry, Revenue) கொண்ட “கணக்கு” வகையுடன் பட்டியலை உருவாக்கவும்.
1. Acc_ID மற்றும் மதிப்பு Acc_Name என விசையுடன் முந்தைய பட்டியலில் இருந்து அகராதியை உருவாக்கவும்.
2. Acc_Name மற்றும் மதிப்பு வருவாய் என விசையுடன் முந்தைய பட்டியலில் இருந்து அகராதியை உருவாக்கவும்.
பயன்படுத்தி System.Linq ;
பயன்படுத்தி அமைப்பு.தொகுப்புகள்.பொது ;
வர்க்கம் கணக்கு விபரம்
{
பொது நிலையான வெற்றிடமானது முக்கிய ( )
{
// வகை பட்டியலை உருவாக்கவும் - கணக்கு.
பட்டியல் விவரங்கள் = புதிய பட்டியல் ( ) ;
// பட்டியலில் 5 பதிவுகளைச் சேர்க்கவும்.
விவரங்கள் . கூட்டு ( புதிய கணக்கு { Acc_ID = 1 , Ac_Name = 'லினக்ஸ்' , தொழில் = 'கல்வி' ,வருவாய் = 2500 } ) ;
விவரங்கள் . கூட்டு ( புதிய கணக்கு { Acc_ID = 2 , Ac_Name = 'பைத்தான்' , தொழில் = 'துவக்க முகாம்' ,வருவாய் = 10000 } ) ;
விவரங்கள் . கூட்டு ( புதிய கணக்கு { Acc_ID = 3 , Ac_Name = 'ஜாவா' , தொழில் = 'கல்வி' ,வருவாய் = 500 } ) ;
விவரங்கள் . கூட்டு ( புதிய கணக்கு { Acc_ID = 4 , Ac_Name = '.NET' , தொழில் = 'பயிற்சி' ,வருவாய் = 2080 } ) ;
விவரங்கள் . கூட்டு ( புதிய கணக்கு { Acc_ID = 5 , Ac_Name = 'ஆரக்கிள்' , தொழில் = 'வேலை' ,வருவாய் = 2090 } ) ;
// மேலே உள்ள பட்டியலிலிருந்து ஒரு அகராதியை Acc_ID ஆகவும் மதிப்பு Acc_Name ஆகவும் உருவாக்கவும்
பணியகம் . ரைட்லைன் ( ' ----விசை Acc_ID ஆகவும் மதிப்பு Acc_Name ஆகவும்----' ) ;
அகராதி கணக்குகள்_டிக்ட்1 = விவரங்கள் . அகராதி ( ஜே => ஜே . Acc_ID , ஜே => ஜே . அக்_பெயர் ) ;
ஒவ்வொரு ( KeyValuePair i உள்ளே கணக்குகள்_ஆணை1 )
{
பணியகம் . ரைட்லைன் ( 'கணக்கு-ஐடி :' + நான் . முக்கிய + ' கணக்கின் பெயர் :' + நான் . மதிப்பு ) ;
}
// மேலே உள்ள பட்டியலில் இருந்து ஒரு அகராதியை உருவாக்கவும்
பணியகம் . ரைட்லைன் ( ' ----Acc_Name மற்றும் மதிப்பு வருவாயாக ----' ) ;
அகராதி கணக்குகள்_டிக்ட்2 = விவரங்கள் . அகராதி ( எல் => எல் . அக்_பெயர் , எல் => எல் . வருவாய் ) ;
ஒவ்வொரு ( KeyValuePair கே உள்ளே கணக்குகள்_ஆணை2 )
{
பணியகம் . ரைட்லைன் ( 'கணக்கின் பெயர் :' + கே . முக்கிய + 'கணக்கு-வருவாய் :' + கே . மதிப்பு ) ;
}
}
}
// என்ற வகுப்பை உருவாக்கவும் - நான்கு பண்புக்கூறுகளுடன் கணக்கு
பொது வர்க்கம் கணக்கு
{
பொது முழு எண்ணாக Acc_ID { பெறு ; அமைக்கப்பட்டது ; }
பொது லேசான கயிறு அக்_பெயர் { பெறு ; அமைக்கப்பட்டது ; }
பொது லேசான கயிறு தொழில் { பெறு ; அமைக்கப்பட்டது ; }
பொது முழு எண்ணாக வருவாய் { பெறு ; அமைக்கப்பட்டது ; }
}
வெளியீடு:
விளக்கம்:
1. நான்கு பண்புக்கூறுகளுடன் 'கணக்கு' என்ற வகுப்பை உருவாக்கவும்.
2. பிரதான வகுப்பில், 'கணக்கு' வகையின் பட்டியலை உருவாக்கி அதில் ஐந்து பதிவுகளைச் செருகவும்.
3. Acc_ID மற்றும் மதிப்பு Acc_Name என விசையுடன் முந்தைய பட்டியலில் இருந்து அகராதியை உருவாக்கவும். இங்கே, TKey ஐ int ஆகவும், TElement ஐ சரமாகவும் குறிப்பிடுகிறோம். ToDictionary() முறையின் உள்ளே, நாம் keySelector இல் Acc_ID ஐயும், ElementSelector இல் Acc_Name ஐயும் அனுப்புகிறோம். இறுதியாக, அகராதியை மீண்டும் செய்யவும், விசை மற்றும் மதிப்பு பண்புகளைப் பயன்படுத்தி விசைகள் மற்றும் மதிப்புகளை வழங்கவும் 'ஃபோர்ச்' லூப்பைப் பயன்படுத்துகிறோம்.
4. முந்தைய பட்டியலிலிருந்து ஒரு அகராதியை உருவாக்கவும், விசையை Acc_Name மற்றும் மதிப்பை வருவாய். இங்கே, TKey ஐ சரமாகவும், TElement ஐ int ஆகவும் குறிப்பிடுகிறோம். ToDictionary() முறையின் உள்ளே, கீசெலக்டரில் Acc_Name ஐயும், எலிமென்ட் செலக்டரில் வருமானத்தையும் அனுப்புகிறோம். இறுதியாக, அகராதியை மீண்டும் செய்யவும், விசை மற்றும் மதிப்பு பண்புகளைப் பயன்படுத்தி விசைகள் மற்றும் மதிப்புகளை வழங்கவும் 'ஃபோர்ச்' லூப்பைப் பயன்படுத்துகிறோம்.
எடுத்துக்காட்டு 2: குறிப்பிடப்பட்ட விசைத் தேர்வி
முந்தைய குறியீட்டைப் பயன்படுத்தி, Acc_ID என விசையுடன் முந்தைய பட்டியலில் இருந்து அகராதியை உருவாக்கவும்.
பயன்படுத்தி அமைப்பு ;பயன்படுத்தி System.Linq ;
பயன்படுத்தி அமைப்பு.தொகுப்புகள்.பொது ;
வர்க்கம் கணக்கு விபரம்
{
பொது நிலையான வெற்றிடமானது முக்கிய ( )
{
// வகை பட்டியலை உருவாக்கவும் - கணக்கு.
பட்டியல் விவரங்கள் = புதிய பட்டியல் ( ) ;
// பட்டியலில் 5 பதிவுகளைச் சேர்க்கவும்.
விவரங்கள் . கூட்டு ( புதிய கணக்கு { Acc_ID = 1 , Ac_Name = 'லினக்ஸ்' , தொழில் = 'கல்வி' ,வருவாய் = 2500 } ) ;
விவரங்கள் . கூட்டு ( புதிய கணக்கு { Acc_ID = 2 , Ac_Name = 'பைத்தான்' , தொழில் = 'துவக்க முகாம்' ,வருவாய் = 10000 } ) ;
விவரங்கள் . கூட்டு ( புதிய கணக்கு { Acc_ID = 3 , Ac_Name = 'ஜாவா' , தொழில் = 'கல்வி' ,வருவாய் = 500 } ) ;
விவரங்கள் . கூட்டு ( புதிய கணக்கு { Acc_ID = 4 , Ac_Name = '.NET' , தொழில் = 'பயிற்சி' ,வருவாய் = 2080 } ) ;
விவரங்கள் . கூட்டு ( புதிய கணக்கு { Acc_ID = 5 , Ac_Name = 'ஆரக்கிள்' , தொழில் = 'வேலை' ,வருவாய் = 2090 } ) ;
// மேலே உள்ள பட்டியலில் இருந்து ஒரு அகராதியை Acc_ID ஆக விசையுடன் உருவாக்கவும்.
அகராதி கணக்குகள்_டிக்ட் = விவரங்கள் . அகராதி ( ஜே => ஜே . Acc_ID ) ;
ஒவ்வொரு ( KeyValuePair i உள்ளே கணக்குகள்_ஆணை )
{
பணியகம் . ரைட்லைன் ( 'விசை:' + நான் . முக்கிய + '--> கணக்கு-பெயர் :' + நான் . மதிப்பு . அக்_பெயர்
+ 'கணக்கு-தொழில் :' + நான் . மதிப்பு . தொழில்
+ 'கணக்கு-வருவாய் :' + நான் . மதிப்பு . வருவாய் ) ;
}
}
}
// என்ற வகுப்பை உருவாக்கவும் - நான்கு பண்புக்கூறுகளுடன் கணக்கு
பொது வர்க்கம் கணக்கு
{
பொது முழு எண்ணாக Acc_ID { பெறு ; அமைக்கப்பட்டது ; }
பொது லேசான கயிறு அக்_பெயர் { பெறு ; அமைக்கப்பட்டது ; }
பொது லேசான கயிறு தொழில் { பெறு ; அமைக்கப்பட்டது ; }
பொது முழு எண்ணாக வருவாய் { பெறு ; அமைக்கப்பட்டது ; }
}
வெளியீடு:
விளக்கம்:
இங்கே, Acc_ID என விசையுடன் அகராதியை உருவாக்குகிறோம். பட்டியலிலிருந்து நாம் உருவாக்கிய அகராதியிலுள்ள ஒவ்வொரு பதிவிற்கும் இது திறவுகோலாக செயல்படுகிறது. அதன் பிறகு, விசை மற்றும் மதிப்பு பண்புகளைப் பயன்படுத்தி விசைகள் மற்றும் மதிப்புகள் (பண்புகளுடன்) பெற 'ஃபோர்ச்' லூப்பைப் பயன்படுத்துகிறோம்.
எடுத்துக்காட்டு 3: நகல் விசைகள் - ஆர்குமென்ட்எக்செப்சன்
இரண்டு பதிவுகள் கொண்ட பட்டியலை உருவாக்கி, அதை Acc_ID விசையாகக் கொண்டு அகராதியாக மாற்ற முயற்சிக்கவும்.
பயன்படுத்தி அமைப்பு ;பயன்படுத்தி System.Linq ;
பயன்படுத்தி அமைப்பு.தொகுப்புகள்.பொது ;
வர்க்கம் கணக்கு விபரம்
{
பொது நிலையான வெற்றிடமானது முக்கிய ( )
{
// வகை பட்டியலை உருவாக்கவும் - கணக்கு.
பட்டியல் விவரங்கள் = புதிய பட்டியல் ( ) ;
// பட்டியலில் 2 பதிவுகளைச் சேர்க்கவும்.
விவரங்கள் . கூட்டு ( புதிய கணக்கு { Acc_ID = 1 , Ac_Name = 'லினக்ஸ்' , தொழில் = 'கல்வி' ,வருவாய் = 2500 } ) ;
விவரங்கள் . கூட்டு ( புதிய கணக்கு { Acc_ID = 1 , Ac_Name = 'பைத்தான்' , தொழில் = 'துவக்க முகாம்' ,வருவாய் = 10000 } ) ;
// மேலே உள்ள பட்டியலிலிருந்து ஒரு அகராதியை Acc_ID ஆக விசையுடன் உருவாக்க முயற்சிக்கவும்.
அகராதி கணக்குகள்_டிக்ட் = விவரங்கள் . அகராதி ( ஜே => ஜே . Acc_ID ) ;
}
}
// என்ற வகுப்பை உருவாக்கவும் - நான்கு பண்புக்கூறுகளுடன் கணக்கு
பொது வர்க்கம் கணக்கு
{
பொது முழு எண்ணாக Acc_ID { பெறு ; அமைக்கப்பட்டது ; }
பொது லேசான கயிறு அக்_பெயர் { பெறு ; அமைக்கப்பட்டது ; }
பொது லேசான கயிறு தொழில் { பெறு ; அமைக்கப்பட்டது ; }
பொது முழு எண்ணாக வருவாய் { பெறு ; அமைக்கப்பட்டது ; }
}
விதிவிலக்கு:
சிஸ்டம் என்பது கையாளப்படாத விதிவிலக்கு. Acc_ID இரண்டிலும் விசை நகல் (1) என்பதால் ஆர்குமென்ட் விதிவிலக்கு உயர்த்தப்பட்டது.
எடுத்துக்காட்டு 4: பூஜ்ய ஆதாரம் - ArgumentNullException
'கணக்கு' வகையுடன் ஒரு பட்டியலை உருவாக்கி, அதற்கு பூஜ்யத்தை ஒதுக்கவும். Acc_ID என விசையுடன் முந்தைய பட்டியலில் இருந்து அகராதியை உருவாக்க முயற்சிக்கவும்.
பயன்படுத்தி அமைப்பு ;பயன்படுத்தி System.Linq ;
பயன்படுத்தி அமைப்பு.தொகுப்புகள்.பொது ;
வர்க்கம் கணக்கு விபரம்
{
பொது நிலையான வெற்றிடமானது முக்கிய ( )
{
// வகை பட்டியலை உருவாக்கவும் - கணக்கு மற்றும் அதற்கு பூஜ்யத்தை ஒதுக்கவும்.
பட்டியல் விவரங்கள் = ஏதுமில்லை ;
// மேலே உள்ள பட்டியலிலிருந்து ஒரு அகராதியை Acc_ID ஆக விசையுடன் உருவாக்க முயற்சிக்கவும்.
அகராதி கணக்குகள்_டிக்ட் = விவரங்கள் . அகராதி ( ஜே => ஜே . Acc_ID ) ;
}
}
// என்ற வகுப்பை உருவாக்கவும் - நான்கு பண்புக்கூறுகளுடன் கணக்கு
பொது வர்க்கம் கணக்கு
{
பொது முழு எண்ணாக Acc_ID { பெறு ; அமைக்கப்பட்டது ; }
பொது லேசான கயிறு அக்_பெயர் { பெறு ; அமைக்கப்பட்டது ; }
பொது லேசான கயிறு தொழில் { பெறு ; அமைக்கப்பட்டது ; }
பொது முழு எண்ணாக வருவாய் { பெறு ; அமைக்கப்பட்டது ; }
}
விதிவிலக்கு:
System.ArgumentNullException என்ற கையாளப்படாத விதிவிலக்கு பட்டியல் பூஜ்யமாக இருப்பதால் உயர்த்தப்பட்டது.
முடிவுரை
C# LINQ இல் உள்ள ToDictionary() முறையைப் பயன்படுத்தி IEnumerable (இங்கே, அது பட்டியல்) ஒரு அகராதியை எவ்வாறு உருவாக்குவது என்பதை நாங்கள் கற்றுக்கொண்டோம். இந்த முறையை இரண்டு வழிகளில் ஓவர்லோட் செய்யலாம். இரண்டு முறைகளையும் எடுத்துக்காட்டுகளுடன் விவாதித்தோம். மேலும், டேட்டா சோர்ஸ்/கீசெலக்டர்/எலிமென்ட் செலக்டர் பூஜ்யமாகவும், விசைகள் நகல்களாகவும் இருக்கும்போது, இந்த முறையால் எழுப்பப்படும் இரண்டு விதிவிலக்கு நிகழ்வுகளை நாங்கள் கற்றுக்கொண்டோம்.