Saltar al contenido

ToList (). ForEach en Linq

Solución:

No deberías usar ForEach de ese modo. Lea “foreach” de Lippert frente a “ForEach”

Si quieres ser cruel contigo mismo (y con el mundo), al menos no crees inútiles List

employees.All(p => {
    collection.AddRange(p.Departments);
    p.Departments.All(u => { u.SomeProperty = null; return true; } );
    return true;
});

Tenga en cuenta que el resultado de la All la expresión es una bool valor que estamos descartando (lo estamos usando solo porque “cicla” todos los elementos)

Repetiré. No deberías usar ForEach para cambiar objetos. LINQ debe usarse de una manera “funcional” (puede crear nuevos objetos pero no puede cambiar objetos antiguos ni puede crear efectos secundarios). Y lo que estás escribiendo está creando tantos inútiles List solo para obtener dos líneas de código …

Como dijo xanatos, este es un mal uso de ForEach.

Si va a usar linq para manejar esto, lo haría así:

var departments = employees.SelectMany(x => x.Departments);
foreach (var item in departments)
{
    item.SomeProperty = null;
}
collection.AddRange(departments);

Sin embargo, el enfoque de bucle es más legible y, por lo tanto, más fácil de mantener.

employees.ToList().ForEach(
     emp=>
     {
          collection.AddRange(emp.Departments);
          emp.Departments.ToList().ForEach(u=>u.SomeProperty = null);
     });
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *