aquí:
for(int i = 0; i < test.Count; i++) {
test[i] = String.Format("Hello {0}", test[i]);
}
No hay necesidad de ser de lujo. No es necesario abusar de LINQ. Solo mantenlo simple.
Usted podría ir un paso más allá y crear un método de extensión de este modo:
static class ListExtensions {
public static void AlterList<T>(this List<T> list, Func<T, T> selector) {
for(int index = 0; index < list.Count; index++) {
list[index] = selector(list[index]);
}
}
}
Uso:
test.AlterList(s => String.Format("Hello {0}", s));
Select
es para proyectar y está destinado realmente para ser utilizado en circunstancias donde hay no hay efectos secundarios. La manipulación de los elementos en la lista muy claramente tiene efectos secundarios. De hecho, la línea
test.Select(s => String.Format("Hello {0}", s));
no hace nada más que la creación de un IEnumerable<string>
que eventualmente podrían ser enumerados más para producir la proyección.
Gracias, el primero de ellos tuvo éxito para mí. –
@Nyla Pareska: Esa versión no modifica la colección original que parecía ser su intención ("pero no ajusta los nombres en la lista"). Si desea hacerlo, consulte el método de extensión que proporcioné en mi respuesta. – jason