שיטת C# ToDictionary

Sytt C Todictionary



הפונקציה ToDictionary ב-C# היא פונקציית הרחבת LINQ המאפשרת לך להפוך אוסף נתונים למילון המציע דרך ברורה ומעשית למפות את הישויות למפתחות נפרדים ולערכים קשורים. הוא דורש שני ארגומנטים, שני נציגים או ביטויי למבדה, אחד לבחירת המפתח ואחד נוסף לבחירת הערך עבור כל אובייקט באוסף. במאמר זה, נשתמש בכמה דוגמאות של קוד C# כדי להדגים את השימושים של הפונקציה ToDictionary.

תחביר:

בואו נפרק ונבין כל רכיב המסופק בתחביר הבא של הפונקציה C# ToDictionary בזה אחר זה:



היה dict = אוסף. ToDictionary ( בורר מפתח , elementSelector ) ;
  • מילת המפתח 'var' נמחקת כאן כדי להגדיר את קטגוריית הסוג של מילון 'dict' שנוצר. ברוב המקרים, זהו Dictionary כאשר K הוא סוג המפתח ו-V הוא קטגוריית הטיפוס של ערך המילון.
  • האלמנט 'אוסף' מייצג את אוסף המקור שברצונך להמיר למילון 'dict'. זה יכול להיות כל מחלקה המיישמת את ממשק IEnumerable כגון רשימה, מערך או תוצאת שאילתה.
  • מילת המפתח 'keySelector' היא ביטוי נציג או למבדה המפרט כיצד לחלץ את המפתח מכל פריט באוסף. הוא מקבל אלמנט מהאוסף כארגומנט ומחזיר את ערך המפתח לאותו פריט. המפתח צריך להיות ייחודי עבור כל פריט באוסף, שכן מילונים לא יכולים לכלול מפתחות כפולים.
  • מילת המפתח 'elementSelector' מתייחסת לביטוי נציג או למבדה המפרט כיצד לחלץ את הערך מכל פריט באוסף. זה גם מקבל אלמנט מהאוסף כארגומנט ומניב את הערך עבור אותו פריט.

לאחר ביצוע הפונקציה ToDictionary, יהיה לך אובייקט מילון חדש שבו כל פריט מהאוסף מיוצג כזוג מפתח-ערך.







דוגמה 1:

בואו נתחיל מחדש במדריך זה על ידי הדגמת השימוש בפונקציית ToDictionary ב-C# בעזרת דוגמה לקוד. בואו נעבור על זה צעד אחר צעד.



הקוד מתחיל ביבוא של מרחבי השמות הנדרשים: System, System.Collections.Generic ו-System.Linq. מרחבי השמות הללו מספקים את המחלקות ושיטות ההרחבה הנחוצות לעבודה עם אוספים ו-LINQ. מוגדרת המחלקה 'Dummy' המכילה את שיטת 'Main' של תוכנית C# זו.



בתוך שיטת ה-'Main', נוצרת רשימה בשם 'L'. רשימה זו מכילה שלושה רכיבי מחרוזת המייצגים את השמות של בשמים שונים לפי בחירת המשתמש. שיטת ToDictionary נקראת ברשימת 'L'. זה ממיר את הרשימה למילון. כל רכיב מחרוזת ברשימה משמש גם כמפתח וגם כערך במילון המתקבל.





המילון נוצר עם השוואת מפתח לא תלוית רישיות באמצעות הפרמטר StringComparer.OrdinalIgnoreCase המשמש בעיקר לציון השוואה לא תלוית רישיות בעת בדיקת קיומם של מפתחות. הצהרת 'אם' בודקת אם המילון מכיל את מפתח 'פצצה' תוך התעלמות מהמקרה שלו. אם המפתח נמצא, קטע הקוד בקטע 'אם' יעובד. בתוך הבלוק 'if', מבוצעת ההצהרה Console.WriteLine('Bombshell exists') אשר מדפיסה את הודעת 'Bombshell exists' למסוף.

באמצעות System ;

באמצעות System. אוספים . גנרית ;

באמצעות System. Linq ;

דמה בכיתה

{

סטָטִי בָּטֵל רָאשִׁי ( )

{

רשימה < חוּט > ל = רשימה חדשה < חוּט > ( ) { 'בלאקאופיום' , 'פְּצָצָה' , 'גוצ'יפלורה' } ;

היה בושם = ל. ToDictionary ( איקס => איקס , איקס => נָכוֹן , StringComparer. OrdinalIgnoreCase ) ;

אם ( נִיחוֹחַ. מכיל מפתח ( 'פְּצָצָה' ) )

{

לְנַחֵם. WriteLine ( 'פצצה קיימת' ) ;

}

}

}

מכיוון שהמילון נוצר עם השוואה לא תלוית רישיות, מקש 'פצצה' מתאים למפתח 'פצצה' בפועל במילון. כתוצאה מכך, הודעת 'פצצה קיימת' מודפסת על המסוף כפי שמוצגת בתמונת הפלט המצורפת הבאה:



דוגמה 2:

בדוגמה הקודמת של הקוד, הדגמנו כיצד ניתן להמיר אוסף פשוט למילון באמצעות הפונקציה ToDictionary. כעת, נעבור לדוגמא קוד מתקדמת קטנה של C# להדגמת השימוש בפונקציית C# ToDictionary. בואו נפרק את הקוד שורה אחר שורה.

קטע קוד איור זה מתחיל בהכנסת אותם מרחבי שמות חובה: System, System.Collections.Generic ו-System.Linq. מרחבי השמות הללו מספקים את המחלקות ושיטות ההרחבה הנדרשות לעבודה עם אוספים ו-LINQ עבור דוגמה זו של קוד. מחלקה 'דמה' מוגדרת שהיא נקודת כניסה.

בתוך שיטת ה-'Main' של שפת C#, נוצרת רשימה בשם 'L'. רשימה זו מכילה שלושה אובייקטים ממחלקת 'Data' המייצגת את מוצרי הקוסמטיקה השונים עם המחירים והמותגים שלהם. כל אובייקט נתונים מאותחל באמצעות תחביר אתחול האובייקטים. המאפיינים 'מחיר' ו'מותג' של כל אובייקט מוגדרים עם ערכים ספציפיים.

כאן מגיעה שיטת ToDictionary. זה נקרא כאן ברשימת 'L'. זה ממיר את הרשימה למילון שבו המאפיין 'מחיר' משמש כמפתח והמאפיין 'מותג' משמש כערך. המילון המתקבל מוקצה למשתנה 'Dic' כפי שהוזכר בקטע הקוד הבא. לולאה 'foreach' מוותרת כדי לקרוא לצמדי מפתח-ערך במילון 'Dic'.

בתוך הלולאה, ניתן לגשת למפתח ולערך של כל זוג באמצעות המאפיינים 'Key' ו-'Value' של מבנה KeyValuePair. הצהרת הפונקציה Console.WriteLine מדפיסה כל זוג מפתח-ערך למסוף. הפלט מעוצב באמצעות אינטרפולציית מחרוזת כדי להציג את המחיר והמידע על המותג בנפרד.

כאן, מחלקה 'נתונים' מוגדרת עם שני מאפיינים: 'מחיר' (מספר שלם המייצג את המחיר של מוצר קוסמטי) ו'מותג' (מחרוזת המייצגת את שם המותג של מוצר).

באמצעות System ;

באמצעות System. אוספים . גנרית ;

באמצעות System. Linq ;

דמה בכיתה

{

סטָטִי בָּטֵל רָאשִׁי ( )

{

רשימה < נתונים > ל = רשימה חדשה < נתונים > ( )

{

מידע חדש { מחיר = 13000 , מותג = 'הודה ביוטי' } ,

מידע חדש { מחיר = 15,000 , מותג = 'שרלוט טלבורי' } ,

מידע חדש { מחיר = 11000 , מותג = 'נארס' }

} ;

מילון < int , חוּט > דצמבר = ל. ToDictionary ( ע => ע. מחיר , ע => ע. מותג ) ;

לכל אחד ( var v ב-Dic )

{

לְנַחֵם. WriteLine ( $ 'מחיר: {v.Key}, מותג: {v.Value}' ) ;

}

}

}

נתונים בכיתה

{

פּוּמְבֵּי int מחיר { לקבל ; מַעֲרֶכֶת ; }

מותג מחרוזת ציבורית { לקבל ; מַעֲרֶכֶת ; }

}

כאשר הקוד מבוצע, הוא יוצר רשימה של אובייקטי נתונים, ממיר את הרשימה למילון בשיטת ToDictionary, ולאחר מכן מציג את צמדי המפתח-ערך של המילון באמצעות לולאת 'foreach'.

הפלט עבור דוגמה זו קוד מסופק בהמשך. הוא מציג את המחירים והמותגים של מוצרי קוסמטיקה המאוחסנים במילון על סמך מאפיינים ספציפיים, ומספק דרך נוחה לארגן ולגשת לנתונים בצמדי מפתח-ערך. הפלט של הקוד הקודם מציג שלוש רשומות עבור המילון:

סיכום

מדריך C# זה הדגים את השימוש בשיטת C# ToDictionary באמצעות כמה איורי קוד בסיסיים ומדויקים. על ידי הצעת מנגנון ברור ואקספרסיבי לתיאור צמדי המפתח-ערך, שיטת ToDictionary מקלה על הפיכת אוסף למילון. זהו כלי C# חזק לתמרן ולשנות את הנתונים.