Karena saya tidak menemukan jawaban di sini yang saya anggap solusi terbaik, inilah cara saya:
Menggunakan "Pilih" untuk memodifikasi data dimungkinkan, tetapi hanya dengan trik. Lagi pula, "Pilih" tidak dibuat untuk itu. Itu hanya menjalankan modifikasi ketika digunakan dengan "Daftar", karena Linq tidak mengeksekusi sebelum data sedang diperlukan. Bagaimanapun, solusi terbaik adalah menggunakan "foreach". Dalam kode berikut, Anda dapat melihat:
class Person
{
public int Age;
}
class Program
{
private static void Main(string[] args)
{
var persons = new List<Person>(new[] {new Person {Age = 20}, new Person {Age = 22}});
PrintPersons(persons);
//this doesn't work:
persons.Select(p =>
{
p.Age++;
return p;
});
PrintPersons(persons);
//with "ToList" it works
persons.Select(p =>
{
p.Age++;
return p;
}).ToList();
PrintPersons(persons);
//This is the best solution
persons.ForEach(p =>
{
p.Age++;
});
PrintPersons(persons);
Console.ReadLine();
}
private static void PrintPersons(List<Person> persons)
{
Console.WriteLine("================");
foreach (var person in persons)
{
Console.WriteLine("Age: {0}", person.Age);
;
}
}
}
Sebelum "foreach", Anda juga dapat membuat pilihan LINQ ...