| File: System\Linq\Parallel\QueryOperators\ListQueryResults.cs | Web Access |
| Project: src\runtime\src\libraries\System.Linq.Parallel\src\System.Linq.Parallel.csproj (System.Linq.Parallel) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ // // ListQueryResults.cs // // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- using System.Collections.Generic; namespace System.Linq.Parallel { /// <summary> /// Class to represent an IList{T} as QueryResults{T} /// </summary> /// <typeparam name="T"></typeparam> internal sealed class ListQueryResults<T> : QueryResults<T> { private readonly IList<T> _source; private readonly int _partitionCount; private readonly bool _useStriping; internal ListQueryResults(IList<T> source, int partitionCount, bool useStriping) { _source = source; _partitionCount = partitionCount; _useStriping = useStriping; } internal override void GivePartitionedStream(IPartitionedStreamRecipient<T> recipient) { PartitionedStream<T, int> partitionedStream = GetPartitionedStream(); recipient.Receive<int>(partitionedStream); } internal override bool IsIndexible { get { return true; } } internal override int ElementsCount { get { return _source.Count; } } internal override T GetElement(int index) { return _source[index]; } internal PartitionedStream<T, int> GetPartitionedStream() { return ExchangeUtilities.PartitionDataSource(_source, _partitionCount, _useStriping); } } }