Merges two dictionaries. : Dictionary « Collections Data Structure « C# / C Sharp






Merges two dictionaries.

        
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Lilium.Collections
{
  public static class DictionaryExtensions
  {
    /// <summary>
    /// Merges two dictionaries.
    /// </summary>
    /// <typeparam name="TKey"></typeparam>
    /// <typeparam name="TValue"></typeparam>
    /// <param name="original"></param>
    /// <param name="additional"></param>
    /// <remarks>
    /// Values in original dictionary will be replaced with values from additional dictionary with same keys.
    /// </remarks>
    public static void Merge<TKey, TValue>(this IDictionary<TKey, TValue> original, IDictionary<TKey, TValue> additional)
    {
      if (original == null) throw new ArgumentNullException("original");
      if (additional == null) throw new ArgumentNullException("additional");

      foreach (var pair in additional)
        original[pair.Key] = pair.Value;
    }

        public static IDictionary<string, object> ToDictionaty(this object obj)
        {
            var result = new Dictionary<string, object>();
            foreach (var prop in obj.GetType().GetProperties())
                result.Add(prop.Name, prop.GetValue(obj, null));
            return result;
        }

        public static IDictionary<string, TValue> ToDictionaty<TValue>(this object obj)
        {
            var result = new Dictionary<string, TValue>();
            foreach (var prop in obj.GetType().GetProperties())
                result.Add(prop.Name, (TValue)prop.GetValue(obj, null));
            return result;
        }

        public static TValue TryGetValue<TKey, TValue>(this IDictionary<TKey, TValue> dictionary, TKey key)
        {
            if (dictionary == null) throw new ArgumentNullException("dictionary");

            TValue value;
            if (dictionary.TryGetValue(key, out value))
                return value;
            else
                return default(TValue);
        }

        public static TValue TryGetValue<TKey, TValue>(this IDictionary<TKey, TValue> dictionary, TKey key, TValue defaultValue)
        {
            if (dictionary == null) throw new ArgumentNullException("dictionary");

            TValue value;
            if (dictionary.TryGetValue(key, out value))
                return value;
            else
                return defaultValue;
        }
  }
}

   
    
    
    
    
    
    
    
  








Related examples in the same category

1.Dictionary(TKey, TValue) represents a collection of keys and values.
2.Try to add duplicate entry to Dictionary
3.Change value for a key
4.The indexer throws an exception if the requested key is not in the dictionary.
5.Use TryGetValue to get a value out
6.ContainsKey can be used to test keys before inserting them
7.for each KeyValuePair
8.To get the values alone, use the Values property
9.To get the keys alone, use the Keys property.
10.Use the Remove method to remove a key/value pair.
11.Dictionary List
12.Move and copy Directory
13.An Hashtable-backed dictionary that enumerates Keys and Values in insertion order.
14.Represents a dictionary which stores the values as weak references instead of strong references.
15.Dictionary Pretty Print
16.Clone a Dictionary
17.Scoped Dictionary