public static int FindIndex <TSource>(this IEnumerable <TSource> source, TSource element, IEqualityComparer <TSource> equalityComparer) { if (source is null) { throw new ArgumentNullException(nameof(source)); } if (equalityComparer is null) { throw new ArgumentNullException(nameof(equalityComparer)); } return(EnumerableEx.FindIndexInternal( source, t => equalityComparer.Equals(t, element) )); }
public static int FindIndex <TSource, TTemporary, TElement>(this IEnumerable <TSource> source, Func <TSource, TTemporary> sourceSelector, TElement element, Func <TElement, TTemporary> elementSelector, IEqualityComparer <TTemporary> equalityComparer) { if (source is null) { throw new ArgumentNullException(nameof(source)); } if (sourceSelector is null) { throw new ArgumentNullException(nameof(sourceSelector)); } if (elementSelector is null) { throw new ArgumentNullException(nameof(elementSelector)); } if (equalityComparer is null) { throw new ArgumentNullException(nameof(equalityComparer)); } return(EnumerableEx.FindIndexInternal( source, t => equalityComparer.Equals(sourceSelector(t), elementSelector(element)) )); }