집 >백엔드 개발 >C#.Net 튜토리얼 >C#.NET: List<소스>转Dictionary
C#.NET은 ToDictionary() 및 GroupBy()를 사용하여 목록을 사전으로 변환하는데, 이 작업에는 코드 한 줄만 필요합니다!
먼저 요구 사항을 살펴보세요. 알려진 자동차는 다음과 같습니다.
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) id를 키로 사용하고 값을 Car로 변환하고 싶습니다. 사전 idCarDict. 방법은 다음과 같습니다.
var idCarDict = cars.ToDictionary(car=>car.id);
올바른 변환을 보장하기 위한 전제 조건은 목록에 중복된 id 값이 없다는 것입니다. 중복된 값이 있는 경우 사전에 중복된 값을 추가하면 예외가 발생합니다.
2) type을 키로 사용하고 List of car의 typeDict를 값으로 사용하고 싶습니다. 방법은 다음과 같습니다.
Dictionary<string, List<Car>> typeCarDict = cars.GroupBy(car => car.type).ToDictionary(r => r.Key, r => r.ToList());
단계별 설명:
그룹화의 첫 번째 단계
cars.GroupBy(car=>car.type) //返回的结果类型为: //IEnumerable<IGroup<string,car>>; //其中string等于car.type,也就是分组的键
두 번째 단계는 IEnumerable 유형을 사전으로 변환하고 적절한 키를 선택하는 것입니다.
ToDictionary(r=>r.Key,r=>r.ToList());//r参数代表分组对象,r.Key便是car.type;//r.ToList()操作后将分组对象转化为List对象
이 변환 코드의 소개는 다음보다 훨씬 간단합니다. car.type을 사용하여 사전을 얻기 위한 foreach 순회:
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은 ToDictionary() 및 GroupBy()를 사용하여 목록을 사전으로 변환할 수 있습니다. 이 작업에는 코드 한 줄만 필요합니다!
먼저 요구 사항을 살펴보세요.
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) id를 키로 사용하고 값을 Car로 사용하여 사전 idCarDict로 변환하려고 합니다. 방법은 다음과 같습니다.
var idCarDict = cars.ToDictionary(car=>car.id);
올바른 변환을 보장하기 위한 전제 조건은 목록에 중복된 id 값이 없어야 한다는 것입니다. 중복된 값이 있는 경우 사전에 중복된 값을 추가하면 예외가 발생합니다.
2) type을 키로 사용하고 List of car의 typeDict를 값으로 사용하고 싶습니다. 방법은 다음과 같습니다.
Dictionary<string, List<Car>> typeCarDict = cars.GroupBy(car => car.type).ToDictionary(r => r.Key, r => r.ToList());
단계별 설명:
그룹화의 첫 번째 단계
cars.GroupBy(car=>car.type) //返回的结果类型为: //IEnumerable<IGroup<string,car>>; //其中string等于car.type,也就是分组的键
두 번째 단계는 IEnumerable 유형을 사전으로 변환하고 적절한 키
ToDictionary(r=>r.Key,r=>r.ToList());//r参数代表分组对象,r.Key便是car.type;//r.ToList()操作后将分组对象转化为List对象
를 선택하는 것입니다. 이 변환 코드의 도입은 이전보다 훨씬 간단합니다. car.type을 사용하여 사전을 얻기 위해 foreach 순회를 따릅니다.
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})); }