Esto me deja perplejo. Estoy usando PetaPoco para recuperar algunos valores de una base de datos, y luego recorrerlos y recuperar un valor para asignar a una de las propiedades de cada objeto.¿Modificar una propiedad de un objeto dentro de un bucle foreach no funciona?
public IEnumerable<RetreaveIndex> FillResults(IEnumerable<RetreaveIndex> results)
{
//add the associated users
foreach (RetreaveIndex index in results)
{
index.AssociatedUsers = _registeredUserDao.GetUsersByIndex(index).ToList();
}
return results;
}
Cuando me puse un punto de interrupción durante el bucle foreach, la propiedad AssociatedUsers se está estableciendo correctamente.
pero luego en un punto de interrupción al final del ciclo, ¿no lo guardó?
Estoy confundido, ¿Index no debería ser una referencia a un lugar en la memoria que se está modificando? Es un objeto después de todo. ¿Que me estoy perdiendo aqui?
su un objeto (véase la parte inferior de la pregunta original).Eché un vistazo al código fuente de PetaPoco, y parece que el método al que llamaba, Query(), utiliza Yield Return para devolver un IENumerable. Cuando cambié mi llamada a Fetch () que devuelve una lista funcionó. Tal vez necesito leer más acerca de rendimiento, pensé que era solo azúcar sintáctico para construir una lista de algún tipo, ¿supongo que estoy equivocado? –
RodH257
return return hace que el cuerpo del método se divida en una sentencia de caso gigante que se convierte en el cuerpo del método MoveNext de una nueva clase IEnumerator. –
He estado trabajando con IEnumerables durante años y, sorprendentemente, esta es la primera vez que toco esto ... (lo que me desconcertó por completo) ¡Salud! – FBryant87