예제 #1
0
        /// <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));
        }
예제 #2
0
 /// <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)));
 }
예제 #3
0
 /// <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));
 }