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()); }
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); }