/// <summary> /// Returns true if this sequence is equal to the other sequence, using an optional value equality comparer. /// </summary> /// <param name="other"></param> /// <param name="eq"></param> /// <returns></returns> public virtual bool SequenceEquals(IEnumerable <TElem> other, IEqualityComparer <TElem> eq = null) { other.CheckNotNull("other"); TList list = other as TList; if (list != null) { return(SequenceEquals(list, eq)); } return(EqualityHelper.SeqEquals(this, other, eq)); }
/// <summary> /// Returns an equality comparer for sequences, determining equality sequentially. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="eq">Optionally, an equality comparer for the elements. Otherwise, the default equality comparer is used.</param> /// <returns></returns> public static IEqualityComparer <IEnumerable <T> > SequenceEquality <T>(IEqualityComparer <T> eq = null) { return(CreateEqComparer <IEnumerable <T> >((x, y) => EqualityHelper.SeqEquals(x, y, eq), x => EqualityHelper.SeqHashCode(x, eq))); }
/// <summary> /// Override this to provide an efficient implementation for the operation. /// </summary> /// <param name="other"></param> /// <param name="eq"></param> /// <returns></returns> protected virtual bool SequenceEquals(TList other, IEqualityComparer <TElem> eq = null) { other.CheckNotNull("other"); return(EqualityHelper.SeqEquals(this, other, eq)); }