Supongamos que tengo un objeto de negocio como este,Una manera sencilla de actualizar objetos IEnumerable usando LINQ
class Employee
{
public string name;
public int id;
public string desgination;
public int grade;
}
List<Employee> lstEmp = new List<Employee>()
{
new Employee() { name="A",desgination="SE",id=1},
new Employee() { name="b",desgination="TL",id=2},
new Employee() { name="c",desgination="PL",id=3},
new Employee() { name="d",desgination="SE",id=4},
new Employee() { name="e",desgination="SSE",id=5},
};
Y si quiero actualizar la calificación de los empleados a 3, cuya designación es "SE", entonces tengo que escribir algo como esto
lstEmp=lstEmp.Select(x =>
{
x.grade = (x.desgination == "SE") ? 3 : x.grade;
return x;
}).ToList();
Pero aquí cuando se utiliza seleccionarlo generará nuevo cada objeto empleado, no actualizar el lstEmp existente, así que tengo que reassgin la lista actualizada a lstEmp.
Me parece que afecta el rendimiento cuando se actualizan grandes actualizaciones con frecuencia. ¿Hay una solución para esto?
Esta pregunta tiene algunas buenas respuestas: http://stackoverflow.com/questions/398871/update-all-objects-in-a-collection-using-linq –