public static ExecuteReaderResponse <T1, T2> Read <T1, T2>(this IDataReader dataReader, Func <T1> read1, Func <T2> read2) { List <T1> result1 = null; List <T2> result2 = null; var readRecords = new Action[] { () => result1 = dataReader.ReadResult(read1), () => result2 = dataReader.ReadResult(read2) }; dataReader.ReadResults(readRecords); return(ExecuteReaderResponse.Create(result1, result2)); }
public static async Task <ExecuteReaderResponse <T1, T2> > ReadAsync <T1, T2>( this DbDataReader dataReader, Func <IDataRecord, T1> read1, Func <IDataRecord, T2> read2, CancellationToken cancellationToken) { List <T1> objects1 = null; List <T2> objects2 = null; var readResults = new Func <Task>[] { async() => objects1 = await dataReader.ReadAsync(read1, cancellationToken), async() => objects2 = await dataReader.ReadAsync(read2, cancellationToken), }; await dataReader.ReadAsync(readResults, cancellationToken); return(ExecuteReaderResponse.Create(objects1, objects2)); }