コード例 #1
0
        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));
        }
コード例 #2
0
        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));
        }
コード例 #3
0
ファイル: Select.cs プロジェクト: lodejard/AllNetCore
 public IPartition <TResult> Take(int count)
 {
     return(new SelectIPartitionIterator <TSource, TResult>(_source.Take(count), _selector));
 }
コード例 #4
0
 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));
 }