תחביר:
1. אם ברצונך ליצור מילון לפי פונקציות בורר המפתח ובורר האלמנטים שצוינו ממקור הנתונים הנתון, העמיסו יתר על המידה את השיטה הבאה:
פרמטרים:
-
- מָקוֹר : מקור יכול להיות IEnumerable (רשימה) שבה המילון נוצר ממקור זה.
- בורר מפתח : זוהי פונקציה המשמשת לקבל את המפתח מכל אלמנט.
- elementSelector: זוהי פונקציה המשמשת כדי לקבל את האלמנט.
- TSource : זהו פרמטר הסוג שמציין את סוג מקור הנתונים.
- TKey: זהו פרמטר הסוג המציין את סוג המפתח.
- TElement : זהו פרמטר הסוג שמציין את סוג האלמנט.
2. אם ברצונך ליצור מילון לפי פונקציית בורר המפתחות שצוינה ממקור הנתונים הנתון, העמיס יתר על המידה את השיטה הבאה:
פרמטרים:
-
- מָקוֹר : מקור יכול להיות IEnumerable (רשימה) שבה המילון נוצר ממקור זה.
- בורר מפתח : זוהי פונקציה המשמשת לקבל את המפתח מכל אלמנט.
- מקור: זה מתייחס לסוג מקור הנתונים.
- TKey : הוא מציין את סוג המפתח.
דוגמה 1: בורר מפתח ופונקציית בורר אלמנטים
צור רשימה עם סוג 'חשבון' שמכיל ארבע תכונות (Acc_ID, Acc_Name, Industry, Revenue) עם חמש רשומות.
1. צור מילון מהרשימה הקודמת עם המפתח בתור Acc_ID וערך בתור Acc_Name.
2. צור מילון מהרשימה הקודמת עם המפתח בתור Acc_Name ו- Value as Revenue.
באמצעות System.Linq ;
באמצעות מערכת.אוספים.גנרי ;
מעמד פרטי חשבון
{
פּוּמְבֵּי סטָטִי בָּטֵל רָאשִׁי ( )
{
// צור רשימה מסוג - חשבון.
רשימת פרטים = חָדָשׁ רשימה ( ) ;
// הוסף 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
לְנַחֵם . WriteLine ( ' ----מפתח כ-Acc_ID וערך כ-Acc_Name----' ) ;
מילון חשבונות_dict1 = פרטים . ToDictionary ( י => י . Acc_ID , י => י . Acc_Name ) ;
לכל אחד ( KeyValuePair i ב חשבונות_dict1 )
{
לְנַחֵם . WriteLine ( 'מזהה חשבון :' + אני . מַפְתֵחַ + ' שם החשבון :' + אני . ערך ) ;
}
// צור מילון מהרשימה שלמעלה עם מפתח בתור Acc_Name וערך כהכנסה
לְנַחֵם . WriteLine ( ' ----מפתח כ-Acc_Name וערך כהכנסה----' ) ;
מילון חשבונות_dict2 = פרטים . ToDictionary ( ל => ל . Acc_Name , ל => ל . הַכנָסָה ) ;
לכל אחד ( KeyValuePair k ב חשבונות_dict2 )
{
לְנַחֵם . WriteLine ( 'שם החשבון :' + ק . מַפְתֵחַ + 'חשבון-הכנסה:' + ק . ערך ) ;
}
}
}
// צור מחלקה בשם - חשבון עם ארבע תכונות
פּוּמְבֵּי מעמד חֶשְׁבּוֹן
{
פּוּמְבֵּי int Acc_ID { לקבל ; מַעֲרֶכֶת ; }
פּוּמְבֵּי חוּט Acc_Name { לקבל ; מַעֲרֶכֶת ; }
פּוּמְבֵּי חוּט תַעֲשִׂיָה { לקבל ; מַעֲרֶכֶת ; }
פּוּמְבֵּי int הַכנָסָה { לקבל ; מַעֲרֶכֶת ; }
}
תְפוּקָה:
הֶסבֵּר:
1. צור מחלקה בשם 'חשבון' עם ארבע תכונות.
2. במחלקה הראשית, צור רשימה מסוג 'חשבון' והכנס לתוכה חמש רשומות.
3. צור מילון מהרשימה הקודמת עם המפתח בתור Acc_ID וערך בתור Acc_Name. כאן, אנו מציינים את ה-TKey כ-int ואת ה-TElement כמחרוזת. בתוך שיטת ToDictionary() אנו מעבירים את Acc_ID ב-keySelector ואת Acc_Name ב-elementSelector. לבסוף, אנו משתמשים בלולאה 'foreach' כדי לחזור על המילון ולהחזיר את המפתחות והערכים באמצעות מאפייני המפתח והערך.
4. צור מילון מהרשימה הקודמת עם המפתח בתור Acc_Name והערך בתור Revenue. כאן, אנו מציינים את ה-TKey כמחרוזת ואת ה-TElement כ-int. בתוך שיטת ToDictionary() אנו מעבירים את Acc_Name ב-keySelector ואת ה-Revenue ב-elementSelector. לבסוף, אנו משתמשים בלולאה 'foreach' כדי לחזור על המילון ולהחזיר את המפתחות והערכים באמצעות מאפייני המפתח והערך.
דוגמה 2: בורר מפתח שצוין
השתמש בקוד הקודם וצור מילון מהרשימה הקודמת עם המפתח בתור Acc_ID.
באמצעות מערכת ;באמצעות System.Linq ;
באמצעות מערכת.אוספים.גנרי ;
מעמד פרטי חשבון
{
פּוּמְבֵּי סטָטִי בָּטֵל רָאשִׁי ( )
{
// צור רשימה מסוג - חשבון.
רשימת פרטים = חָדָשׁ רשימה ( ) ;
// הוסף 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.
מילון חשבונות_dict = פרטים . ToDictionary ( י => י . Acc_ID ) ;
לכל אחד ( KeyValuePair i ב חשבונות_dict )
{
לְנַחֵם . WriteLine ( 'מַפְתֵחַ:' + אני . מַפְתֵחַ + '--> שם חשבון :' + אני . ערך . Acc_Name
+ 'חשבון-תעשיית:' + אני . ערך . תַעֲשִׂיָה
+ 'חשבון-הכנסה:' + אני . ערך . הַכנָסָה ) ;
}
}
}
// צור מחלקה בשם - חשבון עם ארבע תכונות
פּוּמְבֵּי מעמד חֶשְׁבּוֹן
{
פּוּמְבֵּי int Acc_ID { לקבל ; מַעֲרֶכֶת ; }
פּוּמְבֵּי חוּט Acc_Name { לקבל ; מַעֲרֶכֶת ; }
פּוּמְבֵּי חוּט תַעֲשִׂיָה { לקבל ; מַעֲרֶכֶת ; }
פּוּמְבֵּי int הַכנָסָה { לקבל ; מַעֲרֶכֶת ; }
}
תְפוּקָה:
הֶסבֵּר:
כאן, אנו יוצרים מילון עם המפתח בתור Acc_ID. זה משמש כמפתח לכל רשומה במילון שיצרנו מהרשימה. לאחר מכן, אנו משתמשים בלולאת 'foreach' כדי לקבל את המפתחות והערכים (עם תכונות) באמצעות מאפייני המפתח והערך.
דוגמה 3: שכפול מפתחות - ArgumentException
צור רשימה עם שתי רשומות ונסה להמיר אותה למילון עם המפתח Acc_ID.
באמצעות מערכת ;באמצעות System.Linq ;
באמצעות מערכת.אוספים.גנרי ;
מעמד פרטי חשבון
{
פּוּמְבֵּי סטָטִי בָּטֵל רָאשִׁי ( )
{
// צור רשימה מסוג - חשבון.
רשימת פרטים = חָדָשׁ רשימה ( ) ;
// הוסף 2 רשומות לרשימה.
פרטים . לְהוֹסִיף ( חָדָשׁ חֶשְׁבּוֹן { Acc_ID = 1 , Acc_Name = 'לינוקס' , תעשייה = 'חינוך' ,הַכנָסָה = 2500 } ) ;
פרטים . לְהוֹסִיף ( חָדָשׁ חֶשְׁבּוֹן { Acc_ID = 1 , Acc_Name = 'פִּיתוֹן' , תעשייה = 'בוטקמפ' ,הַכנָסָה = 10000 } ) ;
// נסה ליצור מילון מהרשימה שלמעלה עם מפתח בתור Acc_ID.
מילון חשבונות_dict = פרטים . ToDictionary ( י => י . Acc_ID ) ;
}
}
// צור מחלקה בשם - חשבון עם ארבע תכונות
פּוּמְבֵּי מעמד חֶשְׁבּוֹן
{
פּוּמְבֵּי int Acc_ID { לקבל ; מַעֲרֶכֶת ; }
פּוּמְבֵּי חוּט Acc_Name { לקבל ; מַעֲרֶכֶת ; }
פּוּמְבֵּי חוּט תַעֲשִׂיָה { לקבל ; מַעֲרֶכֶת ; }
פּוּמְבֵּי int הַכנָסָה { לקבל ; מַעֲרֶכֶת ; }
}
יוצא מן הכלל:
חריג לא מטופל שהוא System.ArgumentException מועלה מכיוון שהמפתח הוא כפול (1) בשני ה-Acc_ID's.
דוגמה 4: מקור ריק - ArgumentNullException
צור רשימה עם סוג 'חשבון' והקצה לה null. נסה ליצור מילון מהרשימה הקודמת עם המפתח בתור Acc_ID.
באמצעות מערכת ;באמצעות System.Linq ;
באמצעות מערכת.אוספים.גנרי ;
מעמד פרטי חשבון
{
פּוּמְבֵּי סטָטִי בָּטֵל רָאשִׁי ( )
{
// צור רשימה של סוג - חשבון והקצה לו null.
רשימת פרטים = ריק ;
// נסה ליצור מילון מהרשימה שלמעלה עם מפתח בתור Acc_ID.
מילון חשבונות_dict = פרטים . ToDictionary ( י => י . Acc_ID ) ;
}
}
// צור מחלקה בשם - חשבון עם ארבע תכונות
פּוּמְבֵּי מעמד חֶשְׁבּוֹן
{
פּוּמְבֵּי int Acc_ID { לקבל ; מַעֲרֶכֶת ; }
פּוּמְבֵּי חוּט Acc_Name { לקבל ; מַעֲרֶכֶת ; }
פּוּמְבֵּי חוּט תַעֲשִׂיָה { לקבל ; מַעֲרֶכֶת ; }
פּוּמְבֵּי int הַכנָסָה { לקבל ; מַעֲרֶכֶת ; }
}
יוצא מן הכלל:
חריג לא מטופל שהוא System.ArgumentNullException מועלה מכיוון שהרשימה היא null.
סיכום
למדנו כיצד ליצור מילון מתוך ה-IEnumerable (הנה, זה רשימה) באמצעות שיטת ToDictionary() ב-C# LINQ. ניתן להעמיס על שיטה זו בשתי דרכים. דנו בשתי השיטות עם דוגמאות. כמו כן, למדנו את שני המקרים החריגים המועלים בשיטה זו כאשר מקור הנתונים/ keySelector/ elementSelector הוא ריק והמפתחות משוכפלים.