Linq项目集合中未保留Foreach更改

时间:2011-10-12 15:56:19

标签: c# linq foreach loops

在以下示例中,当我返回集合时,不会保留在foreach中应用的更改:

var people = SomeLinqToSqlSource();

foreach (var person in people)
{
   person.Name = "Jimmy";
}

return people.AsQueryable();

这与我的理解相矛盾,即在foreach(..)中,您通过参考当前项目进行操作。

有人可以让我知道我哪里出错吗?

感谢。

1 个答案:

答案 0 :(得分:7)

问题是peopleIQueryable并且在您返回它时会被重新查询并且消费者枚举结果 - 由于每个person实例,您的更新属性现在已经消失通过执行查询重建。

如果您想保留更改,则必须先实现数据,即使用ToList(),然后将列表作为IEnumerable(或IList

返回