public static IEnumerable <TSource> Take <TSource>(this IEnumerable <TSource> source, int count) { if (source == null) { throw Error.ArgumentNull(nameof(source)); } if (count <= 0) { return(EmptyPartition <TSource> .Instance); } IPartition <TSource> partition = source as IPartition <TSource>; if (partition != null) { return(partition.Take(count)); } IList <TSource> sourceList = source as IList <TSource>; if (sourceList != null) { return(new ListPartition <TSource>(sourceList, 0, count - 1)); } return(TakeIterator(source, count)); }
public static IEnumerable <TSource> Take <TSource>(this IEnumerable <TSource> source, int count) { if (source == null) { throw Error.ArgumentNull("source"); } if (count <= 0) { return(new EmptyPartition <TSource>()); } IPartition <TSource> partition = source as IPartition <TSource>; if (partition != null) { return(partition.Take(count)); } return(TakeIterator(source, count)); }
public IPartition <TResult> Take(int count) { return(new SelectIPartitionIterator <TSource, TResult>(_source.Take(count), _selector)); }
static IPartition <TSource> TakePartitionRange(IPartition <TSource> partition, int startIndex, int endIndex) { partition = endIndex == 0 ? EmptyPartition <TSource> .Instance : partition.Take(endIndex); return(startIndex == 0 ? partition : partition.Skip(startIndex)); }