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

chr*_*ofr 3 c# linq foreach loops

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

var people = SomeLinqToSqlSource();

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

return people.AsQueryable();
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢.

Bro*_*ass 7

问题是,当你返回它并且消费者枚举结果时,它people是一个IQueryable并且被重新查询 - 你的更新属性现在消失了,因为每个person实例都是通过执行查询来重建的.

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