public bool MultiSetEquals(IEnumerable <T> other) { var multiset = new MultiSet <T>(other); foreach (T el in elements.Keys) { if (!multiset.Contains(el) || multiset[el] != this[el]) { return(false); } } return(true); }
public bool IsSubsetOf(IEnumerable <T> other) { if (other is null) { throw new ArgumentNullException(); } var multiset = new MultiSet <T>(other); var enumerator = GetEnumerator(); while (enumerator.MoveNext()) { if (!multiset.Contains(enumerator.Current) || multiset[enumerator.Current] < this[enumerator.Current]) { return(false); } } return(true); }