public List <T> ExecuteReader <T>(string nomeProcedure, MapeamentoHandler <T> metodoDeMapeamento, params SqlParameter[] parametros) { var lista = new List <T>(); using (var conexao = new SqlConnection(_stringConexao)) { conexao.Open(); //const string nomeProcedure = "ListaSelecionar"; using (var comando = new SqlCommand(nomeProcedure, conexao)) { comando.CommandType = CommandType.StoredProcedure; if (parametros != null) { comando.Parameters.AddRange(parametros); } using (var registro = comando.ExecuteReader()) { while (registro.Read()) { lista.Add(metodoDeMapeamento(registro)); } } } } return(lista); }
//protected IEnumerable<T> ExecuteReader<T>(string nomeProcedure, Func<SqlDataReader, T> metodoDeMapeamento, params SqlParameter[] parametros) protected List <T> ExecuteReader <T>(string nomeProcedure, MapeamentoHandler <T> metodoDeMapeamento, params SqlParameter[] parametros) { var lista = new List <T>(); using (var conexao = new SqlConnection(_stringConexao)) { conexao.Open(); using (var comando = conexao.CreateCommand()) { comando.CommandType = CommandType.StoredProcedure; comando.CommandText = nomeProcedure; if (parametros != null) { comando.Parameters.AddRange(parametros); } using (var registro = comando.ExecuteReader()) { while (registro.Read()) { // yield - acumular. //yield return metodoDeMapeamento(registro); lista.Add(metodoDeMapeamento(registro)); } } } } return(lista); }