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

C#.NET : List转Dictionary>

黄舟
黄舟original
2017-03-04 10:30:133130parcourir

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")
            };

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);

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());

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

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

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对象

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}));}

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")
            };

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);

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());

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

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

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对象

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}));
}


Déclaration:
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