public static IEnumerable <TSource> Distinct <TSource>(IEnumerable <TSource> source, IEqualityComparer <TSource> comparer = null) { var _result = new List <TSource>(); EnumerableUtil.Each(source, x => { if (EnumerableUtil.FirstOrDefault(_result, y => comparer != null ? comparer.Equals(x, y) : x.Equals(y)) == null) { _result.Add(x); } }); return(_result); }
public static int Find <TSource>(IEnumerable <TSource> source, Func <TSource, bool> predicate, int defaultValue) { var _index = -1; if (EnumerableUtil.FirstOrDefault(source, x => { _index++; return(predicate(x)); }) == null) { return(defaultValue); } return(_index); }
public static IEnumerable <TSource> Except <TSource>(IEnumerable <TSource> first, IEnumerable <TSource> second, IEqualityComparer <TSource> comparer = null) { return(EnumerableUtil.Where(first, x => EnumerableUtil.FirstOrDefault(second, y => comparer != null ? comparer.Equals(x, y) : x.Equals(y)) == null)); }