Μέθοδος C# ToDictionary

Methodos C Todictionary



Η συνάρτηση ToDictionary στο C# είναι μια συνάρτηση επέκτασης LINQ που σας δίνει τη δυνατότητα να μετατρέψετε μια συλλογή δεδομένων σε λεξικό που προσφέρει έναν σαφή και πρακτικό τρόπο αντιστοίχισης των οντοτήτων σε διαφορετικά κλειδιά και σχετικές τιμές. Απαιτεί δύο ορίσματα, δύο εκπροσώπους ή εκφράσεις λάμδα, ένα για την επιλογή του κλειδιού και ένα επιπλέον για την επιλογή της τιμής για κάθε αντικείμενο της συλλογής. Σε αυτό το άρθρο, θα χρησιμοποιήσουμε μερικά παραδείγματα κώδικα C# για να δείξουμε τις χρήσεις της συνάρτησης ToDictionary.

Σύνταξη:

Ας αναλύσουμε και κατανοήσουμε κάθε στοιχείο που παρέχεται στην ακόλουθη σύνταξη της συνάρτησης C# ToDictionary ένα προς ένα:



ήταν υπαγόρευση = συλλογή. To Λεξικό ( επιλογέας κλειδιού , επιλογέας στοιχείων ) ;
  • Η λέξη-κλειδί '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' ελέγχει εάν το λεξικό περιέχει το κλειδί 'bombshell' ενώ αγνοεί την κεφαλαία του. Εάν βρεθεί το κλειδί, θα υποβληθεί σε επεξεργασία το απόσπασμα κώδικα στην ενότητα 'αν'. Μέσα στο μπλοκ 'if', εκτελείται η πρόταση Console.WriteLine('Bombshell υπάρχει') η οποία εκτυπώνει το μήνυμα 'Bombshell υπάρχει' στην κονσόλα.

χρησιμοποιώντας το Σύστημα ;

χρησιμοποιώντας το Σύστημα. Συλλογές . Γενικός ;

χρησιμοποιώντας το Σύστημα. Linq ;

κατηγορίας Dummy

{

στατικός κενός Κύριος ( )

{

Λίστα < σειρά > μεγάλο = νέα λίστα < σειρά > ( ) { 'Μαύρο όπιο' , 'Οβίδα' , 'GucciFlora' } ;

ήταν Άρωμα = ΜΕΓΑΛΟ. To Λεξικό ( Χ => Χ , Χ => αληθής , StringComparer. OrdinalIgnoreCase ) ;

αν ( Αρωμα. ContainsKey ( 'οβίδα' ) )

{

Κονσόλα. WriteLine ( 'Η βόμβα υπάρχει' ) ;

}

}

}

Εφόσον το λεξικό δημιουργείται με σύγκριση χωρίς διάκριση πεζών-κεφαλαίων, το πλήκτρο 'bombshell' ταιριάζει με το πραγματικό κλειδί 'Bombshell' στο λεξικό. Ως αποτέλεσμα, το μήνυμα 'Bombshell υπάρχει' εκτυπώνεται στην κονσόλα, όπως εμφανίζεται στην παρακάτω συνημμένη εικόνα εξόδου:



Παράδειγμα 2:

Στο προηγούμενο παράδειγμα κώδικα, δείξαμε πώς μια απλή συλλογή μπορεί να μετατραπεί σε λεξικό μέσω της συνάρτησης ToDictionary. Τώρα, θα προχωρήσουμε σε ένα λίγο προηγμένο παράδειγμα κώδικα C# για την επίδειξη των χρήσεων της συνάρτησης C# ToDictionary. Ας αναλύσουμε τον κώδικα γραμμή προς γραμμή.

Αυτό το απόσπασμα κώδικα απεικόνισης ξεκινάει εισάγοντας τους ίδιους υποχρεωτικούς χώρους ονομάτων: System, System.Collections.Generic και System.Linq. Αυτοί οι χώροι ονομάτων παρέχουν τις απαιτούμενες κλάσεις και μεθόδους επέκτασης για εργασία με συλλογές και LINQ για αυτό το παράδειγμα κώδικα. Η κλάση 'Dummy' ορίζεται η οποία είναι ένα σημείο εισόδου.

Μέσα στη μέθοδο 'Main' της γλώσσας C#, σχηματίζεται μια λίστα με το όνομα 'L'. Αυτή η λίστα περιέχει τρία αντικείμενα της κατηγορίας «Δεδομένα» που αντιπροσωπεύουν τα διάφορα καλλυντικά προϊόντα με τις τιμές και τις μάρκες τους. Κάθε αντικείμενο δεδομένων αρχικοποιείται χρησιμοποιώντας τη σύνταξη του αρχικοποιητή αντικειμένου. Οι ιδιότητες 'Price' και 'Brand' κάθε αντικειμένου ορίζονται με συγκεκριμένες τιμές.

Εδώ έρχεται η μέθοδος ToDictionary. Ονομάζεται εδώ στη λίστα 'L'. Μετατρέπει τη λίστα σε λεξικό όπου η ιδιότητα 'Τιμή' χρησιμοποιείται ως κλειδί και η ιδιότητα 'Επωνυμία' ως τιμή. Το λεξικό που προκύπτει εκχωρείται στη μεταβλητή 'Dic', όπως αναφέρεται στο παρακάτω παρεχόμενο απόσπασμα κώδικα. Ένας βρόχος 'foreach' εκπέμπεται για να καλέσει τα ζεύγη κλειδιών-τιμών στο λεξικό 'Dic'.

Μέσα στον βρόχο, το κλειδί και η τιμή κάθε ζεύγους έχουν πρόσβαση χρησιμοποιώντας τις ιδιότητες 'Key' και 'Value' της δομής KeyValuePair. Η δήλωση συνάρτησης Console.WriteLine εκτυπώνει κάθε ζεύγος κλειδιού-τιμής στην κονσόλα. Η έξοδος μορφοποιείται χρησιμοποιώντας την παρεμβολή συμβολοσειράς για την εμφάνιση των πληροφοριών τιμής και επωνυμίας ξεχωριστά.

Εδώ, η κλάση 'Δεδομένα' ορίζεται με δύο ιδιότητες: 'Τιμή' (ένας ακέραιος αριθμός που αντιπροσωπεύει την τιμή ενός καλλυντικού προϊόντος) και 'Μάρκα' (μια συμβολοσειρά που αντιπροσωπεύει το εμπορικό σήμα ενός προϊόντος).

χρησιμοποιώντας το Σύστημα ;

χρησιμοποιώντας το Σύστημα. Συλλογές . Γενικός ;

χρησιμοποιώντας το Σύστημα. Linq ;

κατηγορίας Dummy

{

στατικός κενός Κύριος ( )

{

Λίστα < Δεδομένα > μεγάλο = νέα λίστα < Δεδομένα > ( )

{

νέα δεδομένα { Τιμή = 13000 , Μάρκα = 'Huda Beauty' } ,

νέα δεδομένα { Τιμή = 15000 , Μάρκα = 'Σαρλότ Τέλμπουρι' } ,

νέα δεδομένα { Τιμή = 11000 , Μάρκα = 'Ναρς' }

} ;

Λεξικό < ενθ , σειρά > Δεκ = ΜΕΓΑΛΟ. To Λεξικό ( Π => Π. Τιμή , Π => Π. Μάρκα ) ;

για κάθε ( var v σε Dic )

{

Κονσόλα. WriteLine ( $ 'Τιμή: {v.Key}, Μάρκα: {v.Value}' ) ;

}

}

}

Δεδομένα τάξης

{

δημόσιο ενθ Τιμή { παίρνω ; σειρά ; }

δημόσια συμβολοσειρά Μάρκα { παίρνω ; σειρά ; }

}

Όταν εκτελείται ο κώδικας, δημιουργεί μια λίστα αντικειμένων δεδομένων, μετατρέπει τη λίστα σε λεξικό χρησιμοποιώντας τη μέθοδο ToDictionary και, στη συνέχεια, εμφανίζει τα ζεύγη κλειδιού-τιμής του λεξικού χρησιμοποιώντας τον βρόχο 'foreach'.

Η έξοδος για αυτό το παράδειγμα κώδικα παρέχεται παρακάτω. Εμφανίζει τις τιμές και τις μάρκες των καλλυντικών προϊόντων που αποθηκεύονται στο λεξικό με βάση συγκεκριμένες ιδιότητες, παρέχοντας έναν βολικό τρόπο οργάνωσης και πρόσβασης στα δεδομένα σε ζεύγη κλειδιών-τιμών. Η έξοδος του προηγούμενου κώδικα εμφανίζει τρεις εγγραφές για το λεξικό:

συμπέρασμα

Αυτός ο οδηγός C# παρουσίασε τη χρήση της μεθόδου C# ToDictionary μέσω ορισμένων βασικών και ακριβών απεικονίσεων κώδικα. Προσφέροντας έναν σαφή και εκφραστικό μηχανισμό για την περιγραφή των ζευγών κλειδιών-τιμών, η μέθοδος ToDictionary διευκολύνει τη μετατροπή μιας συλλογής σε λεξικό. Είναι ένα ισχυρό βοηθητικό πρόγραμμα C# για το χειρισμό και τη μετατροπή των δεδομένων.