Estoy devolviendo un elemento IEnumerable<object[]>
desde una función que usa yield return
en un bucle.Obtención del primer elemento de un elemento de IEnumerable
public static IEnumerable<object[]> GetData()
{
...
connection.Open();
using (OleDbDataReader dr = command.ExecuteReader())
{
while (dr.Read())
{
object[] array = new object[dr.FieldCount];
dr.GetValues(array);
yield return array;
}
}
connection.Close();
}
¿Cuál es la mejor manera de recuperar el primer elemento sin utilizar un bucle de preferencia?
var result = Adapter.GetData();
Esto es bueno, gracias. Pero me hace atacar otro problema y es que cierro la conexión de DB después de 'yield return', por lo que si llamo a la función dos veces, se genera una excepción diciendo que la conexión anterior no estaba cerrada. ¿Cómo es que esto funciona bien con 'foreach'? ¿Debo deshacerme de algo de alguna manera? –
¿Puedes decir lo que usaste para obtener el primer elemento? – manojlds
Genial, lo arreglé pasando el comportamiento 'CloseConnection' a la función' ExecuteReader'. Todo está funcionando bien ahora. Montones de gracias. –