Convertir le C # LINQ en dictionnaire

Convertir Le C Linq En Dictionnaire



Dans C# LINQ, créer un dictionnaire à partir de System.Collections.Generic.IEnumerable est possible en utilisant la méthode ToDictionary(). Cette méthode crée un dictionnaire avec à partir du donné. Le System.ArgumentNullException est levée si la source de données, keySelector ou elementSelector est null. De plus, si le keySelector produit des clés en double pour deux éléments, le System.ArgumentException Est lancé. Dans ce guide, nous expliquerons comment créer un dictionnaire à partir de la source de données de la liste en surchargeant deux méthodes.

Syntaxe:

1. Si vous souhaitez créer un dictionnaire en fonction des fonctions de sélecteur de clé et de sélecteur d'élément spécifiées à partir de la source de données donnée, surchargez la méthode suivante :









Paramètres:



    1. source : La source peut être un IEnumerable (liste) dans lequel le dictionnaire est créé à partir de cette source.
    2. keySelector : Il s'agit d'une fonction qui permet d'obtenir la clé de chaque élément.
    3. sélecteur d'élément : C'est une fonction qui est utilisée pour obtenir l'élément.
    4. TSource : Il s'agit du paramètre de type qui spécifie le type de la source de données.
    5. TKey : Il s'agit du paramètre de type qui spécifie le type de la clé.
    6. TÉlément : Il s'agit du paramètre de type qui spécifie le type d'élément.

2. Si vous souhaitez créer un dictionnaire en fonction de la fonction de sélecteur de clé spécifiée à partir de la source de données donnée, surchargez la méthode suivante :





Paramètres:



    1. source : La source peut être un IEnumerable (liste) dans lequel le dictionnaire est créé à partir de cette source.
    2. keySelector : Il s'agit d'une fonction qui permet d'obtenir la clé de chaque élément.
    3. TSource : Il s'agit du type de source de données.
    4. TKey : Il spécifie le type de clé.

Exemple 1 : Sélecteur de clé et fonction de sélecteur d'élément spécifiés

Créez une liste avec le type 'Account' qui contient quatre attributs (Acc_ID, Acc_Name, Industry, Revenue) avec cinq enregistrements.

1. Créez un dictionnaire à partir de la liste précédente avec la clé comme Acc_ID et la valeur comme Acc_Name.
2. Créez un dictionnaire à partir de la liste précédente avec la clé comme Acc_Name et Value comme Revenue.

en utilisant Système ;
en utilisant System.Linq ;
en utilisant System.Collections.GenericSystem.Collections.Generic ;

classe Information sur le compte
{
public statique annuler Principal ( )
{
// Créer une liste de type - Compte.
Détails de la liste = nouveau Liste ( ) ;
// Ajoute 5 enregistrements à la liste.
détails . Ajouter ( nouveau Compte { Acc_ID = 1 , Acc_Name = 'Linux' , Industrie = 'Éducation' ,Revenu = 2500 } ) ;
détails . Ajouter ( nouveau Compte { Acc_ID = 2 , Acc_Name = 'Python' , Industrie = 'Camp d'entraînement' ,Revenu = 10000 } ) ;
détails . Ajouter ( nouveau Compte { Acc_ID = 3 , Acc_Name = 'Java' , Industrie = 'Éducation' ,Revenu = 500 } ) ;
détails . Ajouter ( nouveau Compte { Acc_ID = 4 , Acc_Name = '.FILET' , Industrie = 'Entraînement' ,Revenu = 2080 } ) ;
détails . Ajouter ( nouveau Compte { Acc_ID = 5 , Acc_Name = 'Oracle' , Industrie = 'Emploi' ,Revenu = 2090 } ) ;

// Créer un dictionnaire à partir de la liste ci-dessus avec la clé comme Acc_ID et la valeur comme Acc_Name
Console . WriteLine ( ' ----Clé comme Acc_ID et valeur comme Acc_Name----' ) ;
Dictionnaire accounts_dict1 = détails . VersDictionnaire ( j => j . Acc_ID , j => j . Acc_Name ) ;

pour chaque ( KeyValuePair i dans comptes_dict1 )
{
Console . WriteLine ( 'Identifiant de compte :' + je . Clé + ' Nom du compte :' + je . Valeur ) ;
}

// Créer un dictionnaire à partir de la liste ci-dessus avec la clé comme Acc_Name et la valeur comme revenu
Console . WriteLine ( ' ----Key as Acc_Name et Value as Revenue----' ) ;
Dictionnaire accounts_dict2 = détails . VersDictionnaire ( je => je . Acc_Name , je => je . Revenu ) ;

pour chaque ( KeyValuePairk dans comptes_dict2 )
{
Console . WriteLine ( 'Nom du compte :' + k . Clé + ' Compte-Revenu :' + k . Valeur ) ;
}

}
}

// Créer une classe nommée - Compte avec quatre attributs
public classe Compte
{
public entier Acc_ID { obtenir ; ensemble ; }
public chaîne Acc_Name { obtenir ; ensemble ; }
public chaîne Industrie { obtenir ; ensemble ; }
public entier Revenu { obtenir ; ensemble ; }
}

Sortir:

Explication:

1. Créez une classe nommée 'Compte' avec quatre attributs.

2. Dans la classe principale, créez une liste de type 'Compte' et insérez-y cinq enregistrements.

3. Créez un dictionnaire à partir de la liste précédente avec la clé comme Acc_ID et la valeur comme Acc_Name. Ici, nous spécifions le TKey comme int et le TElement comme chaîne. Dans la méthode ToDictionary(), nous passons Acc_ID dans keySelector et Acc_Name dans elementSelector. Enfin, nous utilisons la boucle 'foreach' pour parcourir le dictionnaire et renvoyer les clés et les valeurs à l'aide des propriétés de clé et de valeur.

4. Créez un dictionnaire à partir de la liste précédente avec la clé Acc_Name et la valeur Revenue. Ici, nous spécifions le TKey comme chaîne et le TElement comme int. Dans la méthode ToDictionary(), nous passons le Acc_Name dans le keySelector et le Revenue dans le elementSelector. Enfin, nous utilisons la boucle 'foreach' pour parcourir le dictionnaire et renvoyer les clés et les valeurs à l'aide des propriétés de clé et de valeur.

Exemple 2 : Sélecteur de clé spécifié

Utilisez le code précédent et créez un dictionnaire à partir de la liste précédente avec la clé comme Acc_ID.

en utilisant Système ;
en utilisant System.Linq ;
en utilisant System.Collections.GenericSystem.Collections.Generic ;

classe Information sur le compte
{
public statique annuler Principal ( )
{
// Créer une liste de type - Compte.
Détails de la liste = nouveau Liste ( ) ;
// Ajoute 5 enregistrements à la liste.
détails . Ajouter ( nouveau Compte { Acc_ID = 1 , Acc_Name = 'Linux' , Industrie = 'Éducation' ,Revenu = 2500 } ) ;
détails . Ajouter ( nouveau Compte { Acc_ID = 2 , Acc_Name = 'Python' , Industrie = 'Camp d'entraînement' ,Revenu = 10000 } ) ;
détails . Ajouter ( nouveau Compte { Acc_ID = 3 , Acc_Name = 'Java' , Industrie = 'Éducation' ,Revenu = 500 } ) ;
détails . Ajouter ( nouveau Compte { Acc_ID = 4 , Acc_Name = '.FILET' , Industrie = 'Entraînement' ,Revenu = 2080 } ) ;
détails . Ajouter ( nouveau Compte { Acc_ID = 5 , Acc_Name = 'Oracle' , Industrie = 'Emploi' ,Revenu = 2090 } ) ;

// Créez un dictionnaire à partir de la liste ci-dessus avec la clé comme Acc_ID.
Dictionnaire accounts_dict = détails . VersDictionnaire ( j => j . Acc_ID ) ;
pour chaque ( KeyValuePair i dans comptes_dict )
{
Console . WriteLine ( 'Clé:' + je . Clé + '-->  Nom du compte :' + je . Valeur . Acc_Name
+ ' Compte-Industrie :' + je . Valeur . Industrie
+ ' Compte-Revenu :' + je . Valeur . Revenu ) ;
}

}
}

// Créer une classe nommée - Compte avec quatre attributs
public classe Compte
{
public entier Acc_ID { obtenir ; ensemble ; }
public chaîne Acc_Name { obtenir ; ensemble ; }
public chaîne Industrie { obtenir ; ensemble ; }
public entier Revenu { obtenir ; ensemble ; }
}

Sortir:

Explication:

Ici, nous créons un dictionnaire avec la clé comme Acc_ID. Cela agit comme la clé de chaque enregistrement du dictionnaire que nous avons créé à partir de la liste. Après cela, nous utilisons la boucle 'foreach' pour obtenir les clés et les valeurs (avec attributs) à l'aide des propriétés de clé et de valeur.

Exemple 3 : clés en double – ArgumentException

Créez une liste avec deux enregistrements et essayez de la convertir en dictionnaire avec Acc_ID comme clé.

en utilisant Système ;
en utilisant System.Linq ;
en utilisant System.Collections.GenericSystem.Collections.Generic ;

classe Information sur le compte
{
public statique annuler Principal ( )
{
// Créer une liste de type - Compte.
Détails de la liste = nouveau Liste ( ) ;
// Ajoute 2 enregistrements à la liste.
détails . Ajouter ( nouveau Compte { Acc_ID = 1 , Acc_Name = 'Linux' , Industrie = 'Éducation' ,Revenu = 2500 } ) ;
détails . Ajouter ( nouveau Compte { Acc_ID = 1 , Acc_Name = 'Python' , Industrie = 'Camp d'entraînement' ,Revenu = 10000 } ) ;

// Essayez de créer un dictionnaire à partir de la liste ci-dessus avec la clé comme Acc_ID.
Dictionnaire accounts_dict = détails . VersDictionnaire ( j => j . Acc_ID ) ;

}
}

// Créer une classe nommée - Compte avec quatre attributs
public classe Compte
{
public entier Acc_ID { obtenir ; ensemble ; }
public chaîne Acc_Name { obtenir ; ensemble ; }
public chaîne Industrie { obtenir ; ensemble ; }
public entier Revenu { obtenir ; ensemble ; }
}

Exception:

Une exception non gérée qui est System.ArgumentException est levée car la clé est en double (1) dans les deux Acc_ID.

Exemple 4 : source nulle – ArgumentNullException

Créez une liste avec le type 'Compte' et attribuez-lui la valeur null. Essayez de créer un dictionnaire à partir de la liste précédente avec la clé comme Acc_ID.

en utilisant Système ;
en utilisant System.Linq ;
en utilisant System.Collections.GenericSystem.Collections.Generic ;

classe Information sur le compte
{
public statique annuler Principal ( )
{
// Créez une liste de type - Compte et attribuez-lui une valeur nulle.
Détails de la liste = nul ;

// Essayez de créer un dictionnaire à partir de la liste ci-dessus avec la clé comme Acc_ID.
Dictionnaire accounts_dict = détails . VersDictionnaire ( j => j . Acc_ID ) ;

}
}

// Créer une classe nommée - Compte avec quatre attributs
public classe Compte
{
public entier Acc_ID { obtenir ; ensemble ; }
public chaîne Acc_Name { obtenir ; ensemble ; }
public chaîne Industrie { obtenir ; ensemble ; }
public entier Revenu { obtenir ; ensemble ; }
}

Exception:

Une exception non gérée qui est System.ArgumentNullException est levée car la liste est nulle.

Conclusion

Nous avons appris à créer un dictionnaire à partir de IEnumerable (ici, c'est une liste) en utilisant la méthode ToDictionary() dans C# LINQ. Cette méthode peut être surchargée de deux manières. Nous avons discuté des deux méthodes avec des exemples. De plus, nous avons appris les deux cas d'exception qui sont soulevés par cette méthode lorsque la source de données/ keySelector/ elementSelector est nulle et que les clés sont en double.