ProgramingTip

다른 사전에 추가

bestdevel 2020. 10. 21. 21:15
반응형

다른 사전에 추가


가능성 :
C #에서 사전 병합 C #
에서 한 사전의 값과 키를 다른 사전으로 복사하는 가장 빠른 방법은 무엇입니까?

몇 가지 값이있는 사전이 있습니다.

Animals <string, string>

이제 또 다른 사전을받습니다.

NewAnimals <string,string>

전체 NewAnimals 사전을 동물에 추가 비용을 지불해야합니까?


foreach(var newAnimal in NewAnimals)
    Animals.Add(newAnimal.Key,newAnimal.Value)

참고 :이 경우 예외가 발생합니다.


NET 뿐만 아니라 AddRange모든 ICollection<T>에서 작동 하는 일반 확장 메소드 정의 할 수 Dictionary<TKey,TValue>있습니다.

public static void AddRange<T>(this ICollection<T> target, IEnumerable<T> source)
{
    if(target==null)
      throw new ArgumentNullException(nameof(target));
    if(source==null)
      throw new ArgumentNullException(nameof(source));
    foreach(var element in source)
        target.Add(element);
}

(사전에 대한 중복 키 발생)


더 번 이상 사용하고 싶을 가능성이 가장 높은 확장 방법을 생성 하면 두 번 이상 사용하고 싶을 수 있습니다.

이행 :

 public static void AddRange<T, S>(this Dictionary<T, S> source, Dictionary<T, S> collection)
 {
        if (collection == null)
        {
            throw new ArgumentNullException("Collection is null");
        }

        foreach (var item in collection)
        {
            if(!source.ContainsKey(item.Key)){ 
               source.Add(item.Key, item.Value);
            }
            else
            {
               // handle duplicate key issue here
            }  
        } 
 }

용법 :

Dictionary<string,string> animals = new Dictionary<string,string>();
Dictionary<string,string> newanimals = new Dictionary<string,string>();

animals.AddRange(newanimals);

가장 확실한 방법은 다음과 가능합니다.

foreach(var kvp in NewAnimals)
   Animals.Add(kvp.Key, kvp.Value); 
  //use Animals[kvp.Key] = kvp.Value instead if duplicate keys are an issue

메서드를 Dictionary<TKey, TValue>명시 적으로 구현 하므로 ICollection<KeyValuePair<TKey, TValue>>.Add다음을 수행 할 수도 있습니다.

var animalsAsCollection = (ICollection<KeyValuePair<string, string>>) Animals;

foreach(var kvp in NewAnimals)
   animalsAsCollection.Add(kvp);

클래스가하는 AddRange것과 같은 방법 이 없다는 것은 유감 List<T>입니다.


짧은 대답은 반복해야한다는 것입니다.

이 주제에 대한 추가 정보 :

C #에서 한 사전의 값과 키를 다른 사전으로 복사하는 가장 빠른 방법은 무엇입니까?


foreach를 사용하여 모든 동물을 반복하고 NewAnimals에 넣을 수 있습니다.

참고 URL : https://stackoverflow.com/questions/3982448/adding-a-dictionary-to-another

반응형