在以下示例中,当我返回集合时,不会保留在foreach中应用的更改:
var people = SomeLinqToSqlSource();
foreach (var person in people)
{
person.Name = "Jimmy";
}
return people.AsQueryable();
这与我的理解相矛盾,即在foreach(..)中,您通过参考当前项目进行操作。
有人可以让我知道我哪里出错吗?
感谢。
答案 0 :(得分:7)
问题是people
是IQueryable
并且在您返回它时会被重新查询并且消费者枚举结果 - 由于每个person
实例,您的更新属性现在已经消失通过执行查询重建。
如果您想保留更改,则必须先实现数据,即使用ToList()
,然后将列表作为IEnumerable
(或IList
)