/// <summary> /// Converts the <see cref="DbDataReader"/> into an enumerable of <see cref="ExpandoObject"/> object. /// </summary> /// <param name="reader">The <see cref="DbDataReader"/> to be converted.</param> /// <param name="tableName">The name of the target table.</param> /// <param name="connection">The used <see cref="IDbConnection"/> object.</param> /// <returns>An array of <see cref="ExpandoObject"/> objects.</returns> internal static IEnumerable <dynamic> ToEnumerable(DbDataReader reader, string tableName, IDbConnection connection) { if (reader != null && reader.HasRows) { var func = FunctionCache.GetDataReaderToExpandoObjectConverterFunction(reader, tableName, connection); while (reader.Read()) { yield return(func(reader)); } } }
/// <summary> /// Converts the <see cref="DbDataReader"/> into an enumerable of <see cref="ExpandoObject"/> object in an asynchronous way. /// </summary> /// <param name="reader">The <see cref="DbDataReader"/> to be converted.</param> /// <param name="tableName">The name of the target table.</param> /// <param name="connection">The used <see cref="IDbConnection"/> object.</param> /// <returns>An array of <see cref="ExpandoObject"/> objects.</returns> internal static async Task <IEnumerable <dynamic> > ToEnumerableAsync(DbDataReader reader, string tableName, IDbConnection connection) { var list = new List <dynamic>(); if (reader != null && reader.HasRows) { var func = FunctionCache.GetDataReaderToExpandoObjectConverterFunction(reader, tableName, connection); while (await reader.ReadAsync()) { list.Add(func(reader)); } } return(list); }