Maison > Article > développement back-end > C#.NET : List
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})); }