tutaj:
for(int i = 0; i < test.Count; i++) {
test[i] = String.Format("Hello {0}", test[i]);
}
Nie trzeba być wyszukane. Nie musisz nadużywać LINQ. Po prostu to proste.
Można pójść o krok poza tym i utworzyć metodę rozszerzenia tak:
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]);
}
}
}
Zastosowanie:
test.AlterList(s => String.Format("Hello {0}", s));
Select
jest do rozrzucania i jest naprawdę przeznaczone do stosowania w sytuacjach, w których istnieje nie ma żadnych skutków ubocznych. Manipulowanie przedmiotami na liście bardzo wyraźnie ma skutki uboczne. W rzeczywistości, linia
test.Select(s => String.Format("Hello {0}", s));
nie robi nic oprócz tworzenia IEnumerable<string>
, które mogą ostatecznie być wymienione w ciągu produkować projekcji.
Dzięki, pierwszy udało mi. –
@Nyla Pareska: Ta wersja nie modyfikuje oryginalnej kolekcji, która wydawała się być twoją intencją ("ale nie zmienia nazwisk na liście"). Jeśli chcesz to zrobić, zapoznaj się z metodą rozszerzenia podaną w mojej odpowiedzi. – jason