>  기사  >  백엔드 개발  >  C#.NET: List<소스>转Dictionary>

C#.NET: List<소스>转Dictionary>

黄舟
黄舟원래의
2017-03-04 10:30:133135검색

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


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.