using System.Collections.Generic;
using JD.Collections.ObjectModel;
namespace JD.Collections.Extensions
{
///
/// Extension methods for IDictionary
///
public static class DictionaryExtensions
{
#region AsReadOnly
///
/// Returns a read-only wrapper over the given dictionary.
///
public static ReadOnlyDictionary AsReadOnly(this IDictionary dictionary)
{
return new ReadOnlyDictionary(dictionary);
}
#endregion
#region IsEqualTo
///
/// Returns true if the given dictionary is equal (same key/value pairs) to this dictionary.
///
public static bool IsEqualTo(this IDictionary a, IDictionary collection)
{
return IsEqualTo(a, collection, EqualityComparer.Default);
}
///
/// Returns true if the given dictionary is equal (same key/value pairs) to this dictionary.
///
public static bool IsEqualTo(this IDictionary a, IDictionary collection, IEqualityComparer valueComparer)
{
if (a.Count != collection.Count)
{
return false;
}
foreach (KeyValuePair pair in a)
{
TValue otherValue;
if (!collection.TryGetValue(pair.Key, out otherValue))
{
return false;
}
if (!valueComparer.Equals(pair.Value, otherValue))
{
return false;
}
}
return true;
}
#endregion
#region ValueOrDefault
///
/// Returns the value corresponding to the given key in the dictionary or the default value if the key is not in the dictionary.
///
public static TValue ValueOrDefault(this IDictionary dictionary, TKey key)
{
TValue result;
dictionary.TryGetValue(key, out result);
return result;
}
#endregion
}
}