Ayer vi un fragmento de código en una de las respuestas aquí en StackOverflow que me intrigó. Fue algo como esto:
List<string> myList = new List<string> {"aBc", "HELLO", "GoodBye"};
myList.ForEach(d=>d.ToLower());
Esperaba poder usarlo para convertir todos los elementos en myList a minúsculas. Sin embargo, no sucede ... después de ejecutar esto, la carcasa en myList permanece sin cambios.
Entonces, mi pregunta es si hay una manera, usando expresiones LINQ y Lambda para iterar y modificar fácilmente el contenido de una lista de una manera similar a esta.
Gracias Max
Eso es porque ToLower devuelve una cadena en minúsculas en lugar de convertir la cadena original. Entonces querrías algo como esto:
fuente
fuente
ForEach
utilizaAction<T>
, lo que significa que podría afectarx
si no fuera inmutable. Dado quex
es unstring
, es inmutable, por lo que nada de lo que le haga en el lambda cambiará sus propiedades. La solución de Kyralessa es su mejor opción a menos que desee implementar su propio método de extensión que le permita devolver un valor de reemplazo.fuente
fuente