public static ReadOnlySegmentLinkedList <T> ReadResult <T>(this IDataReader dataReader, int segmentLength, Func <IDataRecord, T> readRecord)
    {
        var segmentLinkedListBuilder = new SegmentLinkedListBuilder <T>(segmentLength);

        while (dataReader.Read())
        {
            var record = readRecord(dataReader);
            segmentLinkedListBuilder.Add(record);
        }

        return(segmentLinkedListBuilder.ToReadOnlySegmentLinkedList());
    }
        public static async Task <ReadOnlySegmentLinkedList <T> > ReadResultAsync <T>(this DbDataReader dataReader, int segmentLength,
                                                                                      Func <IDataRecord, T> readRecord, CancellationToken cancellationToken)
        {
            var segmentLinkedListBuilder = new SegmentLinkedListBuilder <T>(segmentLength);
            await dataReader.ReadResultAsync(() =>
            {
                var record = readRecord(dataReader);
                segmentLinkedListBuilder.Add(record);
            }, cancellationToken);

            return(segmentLinkedListBuilder.ToReadOnlySegmentLinkedList());
        }
Example #3
0
    public static ReadOnlySegmentLinkedList <T> ToReadOnlySegmentLinkedList <T>(this IEnumerable <T> source, int segmentLength)
    {
        Assert.IsNotNull(source);
        var segmentLinkedListBuilder = new SegmentLinkedListBuilder <T>(segmentLength);

        foreach (var item in source)
        {
            segmentLinkedListBuilder.Add(item);
        }

        var readOnlySegmentLinkedList = segmentLinkedListBuilder.ToReadOnlySegmentLinkedList();

        return(readOnlySegmentLinkedList);
    }