LINQ を使用してリストにいくつかの値を設定しようとしましたが、どういうわけか次のコードには値が設定されていません。
class Person
{
public string name;
public Person(string name)
{
this.name = name;
}
}
List<Person> people = new List<Person>() { new Person("a"), new Person("b") };
people.Select(x => { x.name = "c"; return x; });
foreach (Person person in people)
{
Console.WriteLine(person.name);
}
ただし、select メソッドを呼び出した後に ToList() を追加すると、値が設定されます。
List<Person> people = new List<Person>() { new Person("a"), new Person("b") };
people.Select(x => { x.name = "c"; return x; }).ToList();
さらに奇妙なことに、別の行で ToList() を呼び出すと、どちらも機能しません。
List<Person> people = new List<Person>() { new Person("a"), new Person("b") };
people.Select(x => { x.name = "c"; return x; });
people.ToList();