Qui:
for(int i = 0; i < test.Count; i++) {
test[i] = String.Format("Hello {0}", test[i]);
}
Non c'è bisogno di essere di fantasia. Non c'è bisogno di abusare di LINQ. Basta che sia semplice.
Si potrebbe andare un passo oltre e creare un metodo di estensione in questo 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]);
}
}
}
Usage:
test.AlterList(s => String.Format("Hello {0}", s));
Select
è per la proiezione ed è veramente destinato ad essere utilizzato nei casi in cui non vi non ci sono effetti collaterali La manipolazione degli articoli nell'elenco ha chiaramente effetti collaterali. In realtà, la linea
test.Select(s => String.Format("Hello {0}", s));
non fa altro che creare un IEnumerable<string>
che in futuro potrebbe essere enumerato sopra per produrre la proiezione.
Grazie, il primo è riuscito per me. –
@Nyla Pareska: Quella versione non modifica la collezione originale che sembrava essere la tua intenzione ("ma non aggiusta i nomi nella lista"). Se si desidera farlo, vedere il metodo di estensione che ho fornito nella mia risposta. – jason