加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 01:48:10 所属栏目:百科 来源:网络整理
导读:在以下示例中,当我返回集合时,不会保留在foreach中应用的更改: var people = SomeLinqToSqlSource();foreach (var person in people){ person.Name = "Jimmy";}return people.AsQueryable(); 这与我的理解相矛盾,即在foreach(..)中,您通过参考当前项目进行
在以下示例中,当我返回集合时,不会保留在foreach中应用的更改:

var people = SomeLinqToSqlSource();

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

return people.AsQueryable();

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

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

谢谢.

解决方法

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读