Maison > développement back-end > Tutoriel C#.Net > C#.NET : List转Dictionary>

C#.NET : List转Dictionary>

黄舟
Libérer: 2017-03-04 10:30:13
original
3175 Les gens l'ont consulté

C#.NET utilise ToDictionary() et GroupBy() pour convertir la liste en dictionnaire, ce qui ne nécessite qu'une seule ligne de code !

Premier coup d'œil aux exigences, voitures connues, égales à :

                List<Car> cars = new List<Car>(){                
                new Car(1,"audiA6","private"),                
                new Car(2,"futon","merchant"),                
                new Car(3,"feiren","bike"),                
                new Car(4,"bukon","private"),                
                new Car(5,"baoma","private"),                
                new Car(6,"dayun","merchant")
            };
Copier après la connexion

1) Je souhaite utiliser l'identifiant comme clé et la valeur comme Car pour le convertir en dictionnaire idCarDict. La méthode est la suivante :

var idCarDict = cars.ToDictionary(car=>car.id);
Copier après la connexion
Copier après la connexion

La condition préalable pour garantir une conversion correcte est qu'il n'y ait pas de valeurs d'identifiant en double dans la liste. S'il y a des doublons, une exception sera levée pour ajouter des valeurs en double au dictionnaire.

2) Je souhaite utiliser le type comme clé et le typeDict de la liste des voitures. La méthode est la suivante :

Dictionary<string, List<Car>> typeCarDict = cars.GroupBy(car => car.type).ToDictionary(r => r.Key, r => r.ToList());
Copier après la connexion
Copier après la connexion

Explication étape par étape :
La première étape consiste à regrouper

cars.GroupBy(car=>car.type) //返回的结果类型为: //IEnumerable<IGroup<string,car>>;
//其中string等于car.type,也就是分组的键
Copier après la connexion
Copier après la connexion

La deuxième étape consiste à convertir le type IEnumerable en dictionnaire et à sélectionner la clé appropriée

ToDictionary(r=>r.Key,r=>r.ToList());//r参数代表分组对象,r.Key便是car.type;//r.ToList()操作后将分组对象转化为List对象
Copier après la connexion
Copier après la connexion

L'introduction de ce code de conversion est beaucoup plus simple. que le parcours foreach suivant pour obtenir un dictionnaire avec car.type :

var dict = new Dictionary<string,List<Car>>();
foreach(var car in cars)
{  if(dict.Contains(car.type))
     dict[car.type].Add(car);
  else
    dict.Add(car.type,new List<Car>(){car}));}
Copier après la connexion

C#.NET utilise ToDictionary() et GroupBy() pour convertir List en Dictionary, ce qui ne nécessite qu'une seule ligne de code !

Jetez d'abord un œil aux exigences. Les voitures connues sont égales à :

         List<Car> cars = new List<Car>(){
                new Car(1,"audiA6","private"),
                new Car(2,"futon","merchant"),
                new Car(3,"feiren","bike"),
                new Car(4,"bukon","private"),
                new Car(5,"baoma","private"),
                new Car(6,"dayun","merchant")
            };
Copier après la connexion

1) Je souhaite utiliser l'identifiant comme clé et la valeur comme Car pour la convertir en un dictionnaire idCarDict. La méthode est la suivante :

var idCarDict = cars.ToDictionary(car=>car.id);
Copier après la connexion
Copier après la connexion

La condition préalable pour garantir une conversion correcte est qu'il n'y ait pas de valeurs d'identifiant en double dans la liste. S'il y a des doublons, une exception sera levée pour ajouter des valeurs en double au dictionnaire.

2) Je souhaite utiliser le type comme clé et le typeDict de la liste des voitures. La méthode est la suivante :

Dictionary<string, List<Car>> typeCarDict = cars.GroupBy(car => car.type).ToDictionary(r => r.Key, r => r.ToList());
Copier après la connexion
Copier après la connexion

Explication étape par étape :
La première étape consiste à regrouper

cars.GroupBy(car=>car.type) //返回的结果类型为: //IEnumerable<IGroup<string,car>>;
//其中string等于car.type,也就是分组的键
Copier après la connexion
Copier après la connexion

La deuxième étape consiste à convertir le type IEnumerable en dictionnaire et à sélectionner la clé appropriée

ToDictionary(r=>r.Key,r=>r.ToList());//r参数代表分组对象,r.Key便是car.type;//r.ToList()操作后将分组对象转化为List对象
Copier après la connexion
Copier après la connexion

L'introduction de ce code de conversion est beaucoup plus simple. que le parcours foreach suivant pour obtenir un dictionnaire avec car.type :

var dict = new Dictionary<string,List<Car>>();
foreach(var car in cars)
{
  if(dict.Contains(car.type))
     dict[car.type].Add(car);
  else
    dict.Add(car.type,new List<Car>(){car}));
}
Copier après la connexion


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal