IEnumerable の特定のエントリを更新するメソッドが必要です。バックグラウンドでコレクションのクローンを作成していたため、エントリに対して foreach を実行して値を更新できないことがわかりました。これは、私の IEnumerable がいくつかの LINQ->SQL クエリによって支えられていたためです。
リストを取るメソッドを変更することで、この動作を変更しました。リストは常に可変であるため、メソッドはリスト内の実際のオブジェクトを変更します。List が渡されることを要求するのではなく、使用できる Mutable インターフェイスはありますか?
// Will not behave as consistently for all IEnumerables
public void UpdateYesterday (IEnumerable<Job> jobs) {
foreach (var job in jobs.Where(x => x.date == Yesterday)) {
job.done = true;
}
}
...
public class Job {
...
public DateTime Date { get; set; }
}