Mega Code Archive

 
Categories / C# / Collections Data Structure
 

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