public static bool NullableDictionaryEqual <TKey, TValue>(this IDictionary <TKey, TValue> first, IDictionary <TKey, TValue> second) { if (first == null && second == null) { return(true); } else if (first == null || second == null) { return(false); } else if (object.ReferenceEquals(first, second)) { return(true); } var keyComparer = BaseEqualityComparer <KeyValuePair <TKey, TValue> > .Make((_1, _2) => object.Equals(_1.Key, _2.Key), _ => _.Key.NullableGetHashCode()); return(first.Count == second.Count && !first.Except(second, keyComparer).Any()); }
public static bool NullableSequenceEqual <TSource>(this IEnumerable <TSource> first, IEnumerable <TSource> second) { return(NullableSequenceEqual(first, second, BaseEqualityComparer <TSource> .Make())); }