【问题标题】:Foreach changes not being preserved on Linq item collection未在 Linq 项目集合上保留 Foreach 更改
【发布时间】:2011-12-06 06:36:27
【问题描述】:

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

var people = SomeLinqToSqlSource();

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

return people.AsQueryable();

这与我的理解相矛盾,即在 foreach(..) 中,您对当前项目进行了引用操作。

谁能告诉我哪里出错了?

谢谢。

【问题讨论】:

    标签: c# linq foreach loops


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢!我现在知道了。我已经实现了我的数据 - 现在一切正常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多