using System; using System.Collections.Generic; namespace FF8 { /// /// class to add function to dictionary /// /// /// public static class DictionaryEx { #region Methods /// /// Reverses Key and Value of dictionary. /// /// /// /// /// public static Dictionary Reverse(this IDictionary source) { Dictionary dictionary = new Dictionary(); foreach (KeyValuePair entry in source) { if (!dictionary.ContainsKey(entry.Value)) dictionary.Add(entry.Value, entry.Key); } return dictionary; } public static void AddRangeOverride(this Dictionary dic, Dictionary dicToAdd) { dicToAdd.ForEach(x => dic[x.Key] = x.Value); } public static void AddRangeNewOnly(this Dictionary dic, Dictionary dicToAdd) { dicToAdd.ForEach(x => { if (!dic.ContainsKey(x.Key)) dic.Add(x.Key, x.Value); }); } public static void AddRange(this Dictionary dic, Dictionary dicToAdd) { dicToAdd.ForEach(x => dic.Add(x.Key, x.Value)); } public static bool ContainsKeys(this Dictionary dic, IEnumerable keys) { bool result = false; keys.ForEachOrBreak((x) => { result = dic.ContainsKey(x); return result; }); return result; } public static void ForEach(this IEnumerable source, Action action) { foreach (var item in source) action(item); } public static void ForEachOrBreak(this IEnumerable source, Func func) { foreach (var item in source) { bool result = func(item); if (result) break; } } #endregion Methods } }